1

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

std::map<keyT, valueT>

keyT 和 valueT 数据类型将在运行时确定,我想根据不同的数据类型创建几个地图实例。我怎样才能做到这一点?

4

3 回答 3

3

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

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

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

因为没有这些信息,编译器就无法生成代码。要真正建造房屋,您将需要砖头和砂浆,而不仅仅是蓝图。

于 2013-01-06T15:50:09.703 回答
0

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

typedef std::map<int, boost::any> MyIntMap;
于 2013-01-06T19:10:45.283 回答
0

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

于 2013-01-06T15:48:35.480 回答