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

此文来源于👉 【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;
}
Licensed under CC BY-NC-SA 4.0