【发布时间】:2012-07-22 01:02:47
【问题描述】:
我想创建一个包含离散类型值的容器(最好是地图):
KEY Value
Omega 1.9
Output myoutput.out
sizex 82
##### ###
其中键是 = "std::string",值是 "INT/ DOUBLE/ String"
我尝试声明类似的东西。
template<typename T>
map<string, typename T> mymap;
但确定它不起作用。
:(
我知道有一种简单的方法,将它们分成不同的变量,但这只会导致代码膨胀。我也很清楚这个事实,std::map<key_value key, class Allocator = allocator<pair<const Key,T>>
编译时需要知道“key”和“value”的信息来生成空间。
但是这个问题困扰了我很长一段时间,只需要对其进行排序:D
有人能帮我看看这个吗:D
【问题讨论】:
-
您可以尝试将 Boost.variant 作为映射类型。但是你确定你真的需要
map吗? -
可能是
data_type的Boost.any? -
使用“Boost.variant”这个新库,我猜有点麻烦。
-
无论如何地图不是唯一的东西。我想使用容器中相应“键”的“值”进行进一步计算,并且由于地图在 O(N) 内给出结果——(N——元素数量)我决定使用地图。
-
通过将
int和double存储为二进制值而不是字符串,您真正实现了什么?它看起来像一个配置文件,性能重要吗?只需在从地图检索时反序列化值,并断言数字转换有效。