具有相同键类型和不同项类型的c ++映射

时间:2011-05-05 14:37:35

标签: c++ stl types map key

  

可能重复:
  how do you make a heterogeneous boost::map?

可能在C ++中有一个地图,键和相同类型的项目具有相同的类型? 例如:

 _______________________
 |    key    |   value   |
 |===========|===========|
 | string    |   int     |
 |-----------|-----------|
 | string    |   char    |
 |-----------|-----------|
 | string    |  vector   |
 |-----------|-----------|
 | string    |   ....    |

2 个答案:

答案 0 :(得分:6)

是的,您可以存储可变参数类型,例如boost::any或(我的个人偏好,boost::variant

因此您的值类型可以定义为:

typedef boost::variant<int, char, ...> value_type;

存储而不是map,然后在提取值后,使用访问者概念进行处理。

答案 1 :(得分:0)

我不确定你为什么要这样做,但你可以使用map<std::string, boost::any>我相信。

真正尝试做什么?