Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C+;中通用项的容器需要帮助+; 我想知道是否可以定义一个通用的C++容器,它存储如下项: template <typename T> class Item{ typename T value; } 模板 类项目{ 类型名T值; }_C++_Visual C++_Templates_Generics - Fatal编程技术网

C+;中通用项的容器需要帮助+; 我想知道是否可以定义一个通用的C++容器,它存储如下项: template <typename T> class Item{ typename T value; } 模板 类项目{ 类型名T值; }

C+;中通用项的容器需要帮助+; 我想知道是否可以定义一个通用的C++容器,它存储如下项: template <typename T> class Item{ typename T value; } 模板 类项目{ 类型名T值; },c++,visual-c++,templates,generics,C++,Visual C++,Templates,Generics,我知道声明需要定义项目类型,例如: std::vector<Item <int> > items; std::向量项; 是否有任何图案设计或包装可以解决此问题?如果您需要一个可以容纳任何类型元素的容器,请查看 在您当前的问题中,std::vector和std::vector有9种类型,您最好使用boost::variant,与您获得的boost::any相比: 类型安全(编译时检查) 速度(类似于联合,无堆分配,无typeid调用) 只要用这个: typedef

我知道声明需要定义项目类型,例如:

std::vector<Item <int> > items;
std::向量项;

是否有任何图案设计或包装可以解决此问题?

如果您需要一个可以容纳任何类型元素的容器,请查看


在您当前的问题中,
std::vector
std::vector

有9种类型,您最好使用
boost::variant
,与您获得的
boost::any
相比:

  • 类型安全(编译时检查)
  • 速度(类似于联合,无堆分配,无
    typeid
    调用)
只要用这个:

typedef boost::variant<Type0, Type1, Type2, Type3, Type4,
                       Type5, Type6, Type7, Type8>        Item;

typedef std::vector<Item> ItemsVector;
typedef boost::变量项;
typedef std::vector ItemsVector;

要在
boost::variant
上调用操作,最好的方法是使用创建静态访问者,在中阅读有关它的信息。

类项存储的是类型为T的对象。例如,项应在变量“value”中存储一个整数。您试图实现什么?为什么不能只使用
vector
?如果要存储在此类容器中的类型在编译时已知,可以使用boost::variant而不是boost::any,这增加了一些类型安全性。我想要实现的是为9种项定义一个向量。不管怎么说,我认为任何东西都可以解决我的问题。我不确定你想要什么。首先,您的
类型不存储任何内容。然后,你展示了一种做某事的方法(
std::vector
),然后你问是否可以这样做。是的,你当然可以创建这样一个向量。或者你想知道什么?