此文来源于👉 【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;
}