是什么:
包含< variant >
std::variant
允许列出变量所有的可能的类型,然后决定它是什么类型
代码示例:
int main()
{
std::variant<std::string,int> value;
value="Hello";
value=4;
value.index(0);//类型索引,会把类型映射到索引上0,1;会取到"Hello"
}
std::get<int>(value);//提取数据
std::get_if< std::string>(variant类型参数)
//获取当前数据类型作为字符串 会返回一个指针;
std::any
可以存任何的类型;
std::any data;
data=7;
data="Hello";
std::any_cast<std::string>(data);//读取当前模版类的类型,若不是会抛出异常
std::any和std::variant的区别
std::any会动态的分配空间
std::variant 静态分配 效率高;
数据提取
variant.index(索引值)//类型索引,会把类型映射到索引上0,1;
std::get
std::any_cast< std::string>(data);//读取当前模版类的类型,若不是会抛出异常