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
),然后你问是否可以这样做。是的,你当然可以创建这样一个向量。或者你想知道什么?