【问题标题】:c++ map with same key type and different item type [duplicate]c ++映射具有相同的键类型和不同的项目类型[重复]
【发布时间】:2011-05-05 14:37:34
【问题描述】:

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

在 C++ 中可能有一个键类型相同但项目类型不同的映射? 例如:

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

【问题讨论】:

  • 您如何知道您的键所指的值类型?你可能可以用一堆铸造和使用空隙来做一些事情,但这似乎是一个的想法......

标签: c++ stl types map key


【解决方案1】:

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

所以你的值类型可以定义为:

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

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

【讨论】:

  • 事实上,在这种情况下,地图值都具有相同的类型 - value_type
  • @unapersson:是的,但它确实解决了 OP 遇到的问题 :)
【解决方案2】:

我不太确定您为什么要这样做,但我相信您可以使用 map&lt;std::string, boost::any&gt;

真的想做什么?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-27
    • 2017-04-04
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多