首页 > 解决方案 > 是否可以使用 std::vector向量;这将导致异构数据类型

问题描述

是否可以定义std::vector<std::any> vec

https://www.bfilipek.com/2018/06/any.html#message-passing // 你可以在容器中使用它:

std::map<std::string, std::any> m;
m["integer"] = 10;
m["string"] = std::string("Hello World");
m["float"] = 1.0f;
std::vector<std::any> vec;

我们可以有类似的东西吗

class a
{
   int val;
}

class b
{
   float val;
}

vec.emplaceback(a);
vec.emplaceback(b);

标签: c++c++17

解决方案


是的,这是可能的。

std::any只是 a 的类型安全包装器void*,具有值语义。

在此处的现场演示中查看您的代码复制粘贴更正。


推荐阅读