C++单一变量存放多种类型的数据

本文最后更新于:2022年3月19日 凌晨

此文来源于👉 【77】【Cherno C++】【中字】单一变量存放多种类型的数据_哔哩哔哩_bilibili

用来处理可能存在也可能不存在的数据,也可能是与我们预期不同的类型。当然也不一定,而是让我们存储不同的数据。
std::variant的作用是让我们不用担心处理的确切类型,指定一个std::variant的东西,然后列出他可能的数据类型。
例子:

#include <iostream>
#include <variant>

int main(void)
{
    std::variant<std::string, int> data;
    data = "Cherno";
    std::cout << std::get<std::string>(data) << '\n';
    
    data = 2;// data被重新赋值为2
    std::cout << std::get<int>(data) << '\n';
    
    data.index();// index函数会告诉你类型的索引, 此时会打印1。
    
    if (auto value = std::get_if<int>(&data))
    {
        std::string&v = *value;
    }
    else
    {
        //...
    }
    
    /*
    std::cout << std::get<std::string>(data) << '\n';
    
    错误的访问方法,在data被置为int后依旧按照std::string访问,会抛出一个
    bad variant access异常
    */
    
    std::cin.get();
    
    return 0;
}

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!