在一个变量中存多种类型的数据

是什么:
包含< 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< int>(value)//以模版类型提取;
std::any_cast< std::string>(data);//读取当前模版类的类型,若不是会抛出异常

posted @ 2024-07-16 10:33  Wzline  阅读(8)  评论(0编辑  收藏  举报