如何通过在运行时中指定键和值数据类型来创建如下所示的c ++ stl std :: map。
std::map<keyT, valueT>
keyT和valueT数据类型在运行时是明确的,我想根据不同的数据类型创建几个map实例。我怎么能这样做?
答案 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;