c++ - C++ 中通用项目的容器需要帮助

标签 c++ visual-c++ templates generics

我想知道是否可以定义一个通用的 C++ 容器来存储如下项目:

template <typename T>
class Item{
typename T value;
}

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

std::vector<Item <int> > items;

是否有任何模式设计或包装器可以解决此问题?

最佳答案

对于 9 种类型,你最好的选择是使用 boost::variant,与 boost::any 相比,你获得:

  • 类型安全(编译时检查)
  • 速度(类似于 union ,没有堆分配,没有typeid调用)

只需使用这个:

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

typedef std::vector<Item> ItemsVector;

为了在 boost::variant 上调用一个操作,最好的方法是使用创建一个静态访问者,阅读 documentation 中的相关内容.

关于c++ - C++ 中通用项目的容器需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3794945/

相关文章:

c++ - 静态链接到 libzbar.a 时出错 : undefined reference to `_imp__GetACP@0'

c++ - 如何向 MFC WinMain 添加包装器?

graphics - D3DERR_OUTOFVIDEOMEMORY 和 E_OUTOFMEMORY 有什么区别

c++ - 为什么我的 "choose k from n"算法适用于 std::vector 但不适用于 std::map?

c++ - 为什么必须在何处以及为什么要放置"template"和"typename"关键字?

c++ - 寻找模式 C++

c++ - 无法将 int 分配给返回类的成员 int

c++ - std::make_shared 作为默认参数不编译

c++ - 为什么必须在哪里放置 “template”和 “typename”关键字?

c++ - 编译 C++ 代码时收到错误