通过在运行时指定键和值数据类型来创建std :: map实例

时间:2013-01-06 15:25:30

标签: c++

如何通过在运行时中指定键和值数据类型来创建如下所示的c ++ stl std :: map。

std::map<keyT, valueT>

keyT和valueT数据类型在运行时是明确的,我想根据不同的数据类型创建几个map实例。我怎么能这样做?

3 个答案:

答案 0 :(得分:3)

C ++模板只是类和/或函数的蓝图。

在程序中有模板定义,并不意味着编译器会为它们生成代码。

编译器只会在模板实例化时生成代码,即通过用真实数据/类类型替换参数来使用模板时。

因为没有这些信息,编译器无法生成代码。要真正建造房屋,你需要砖和迫击炮,而不仅仅是蓝图。

答案 1 :(得分:0)

你实际上可以使用decltype基于其他变量类型声明一个带有模板参数的映射(在c ++ 11中),请参阅本页http://www.cprogramming.com/c++11/c++11-auto-decltype-return-value-after-function.html但是如果你指的是c ++ 98,它们是正确的这是不可能的

答案 2 :(得分:0)

您可能会发现boost::any对此任务很有用,例如

typedef std::map<int, boost::any> MyIntMap;