如何创建异构向量

时间:2018-08-15 11:17:42

标签: c++11 boost c++03 boost-variant boost-any

我不确定这个问题是否超出了主题范围,但是如果是,请告诉我在哪里可以提出这个问题,我会做的。

C ++标准:

我正在使用C ++ 03/11标准(不是我的选择,所以我不能选择更高的东西)

我想做什么:

我正在尝试创建一个向量(或任何容器)来容纳未知数量的元素,而且每个元素都可能是不同的类型。

我已经尝试过的内容:

  • boost :: any
  • boost :: variant

问题:

在这两种情况下,我都有相同的问题,那就是对存储元素的访问。

-说明:-

Varinat:

typedef boost::variant<int, string, bool> myvar;
int main() {
    std::vector<myvar> vec;
    vec.push_back("hello");
    string s = boost::get<string>(vec[0]);
    cout << s;
}

任何:

typedef boost::any any;
int main() {
    std::vector<any> vec;
    vec.push_back("hello");
    string s = boost::any_cast<string>(vec[0]);
    cout << s;
}

在尝试获取any_cast<type>get<type>时,我需要指定变量的类型

我要做什么:

如果可能的话,我想做这样的事情:

int main() {
    std::vector<ANY_TYPE> vec;
    vec.push_back("hello"); //string 
    vec.push_back(1); //int
    vec.push_back(new Object); //a class
    auto s = vec[0]; 

自动应为具有该值的类型,例如,在这种情况下,应为 STRING ,或者如果我将其称为 vec [2] < / strong>应该是对象     }

是否存在我不知道谁可以帮助我解决此问题的库或功能?如果是这样,请告诉我。

0 个答案:

没有答案