【发布时间】:2010-11-02 23:31:48
【问题描述】:
假设我有一个名为 generic_pair 的类,格式如下:
template < typename K, typename V >
struct generic_pair{
K key;
V value;
};
现在,问题是我希望能够将这些 generic_pairs 存储在一个 STL 容器中但是容器中的所有
我的第一个想法是使用“标签”来创建封装类型的层次结构,并使用泛型类型声明容器,但实际元素具有继承类型。例如,
struct base_type{
typedef void type;
};
struct int_type: base_type{
typedef int type;
}
struct string_type: base_type{
typedef std::string type;
}
/// and so on establish a type hierarchy as necessary and then...
std::vector < generic_pair < base_type, base_type > > vec;
我敢打赌,有更好、更正确的方法吗?任何想法,方向表示赞赏。如果您在 MPL 或其他地方看到过类似的实现或相关工具/技术,那也很有帮助。 (我试图避免使用宏)
【问题讨论】:
-
与“我怎样才能将非多态的东西硬塞到容器中”的问题一样,如果可能的话,你需要弄清楚你将如何实际使用容器。如果您遍历这些项目,您希望能够对它们做什么?
-
@Oli:假设基于键和/或值的类型,我想将它们打印出来或序列化到磁盘。现在,你会如何“拔掉”它?