【问题标题】:C++ map versus multimap for multi-key lookup用于多键查找的 C++ 映射与多映射
【发布时间】:2012-01-05 21:50:43
【问题描述】:

我的数据在概念上如下所示:

"BLUE" :  (3 , 10,  15, 1220,  44040)
"RED"  :  (44, 523,  122143,  323233)
"BANANA" : (....)

构建时间并不重要。对于我有多个键的查找,我想组合所有值列表,并对它们进行排序;为了获得最快的结果,我应该将其表示为 C++ 中的地图还是多地图?

换句话说,由于附加到键的值向量是可变长度的,我应该有一个带有 key:vector 的映射,还是带有 key1:int1、key1:int2 等的多映射?

目的是编写一个函数,其中输入 = (key1, ...., keyN),输出是所有值的排序列表。

【问题讨论】:

    标签: c++ map multimap


    【解决方案1】:

    map<string, vector<int>> 解决方案更易于理解和编写代码,并且在空间方面可能更有效,因为您将值组排列到连续存储中,而不是为每个值创建一个节点。出于同样的原因,它可能在算法上也更有效。

    【讨论】:

      【解决方案2】:

      如果您在进行任何查找之前只填充一次,最好的方法是在填充后对向量进行排序:vector<pair<string, int> >

      【讨论】:

      • 感谢您的回答,能否提供更多详细信息?填充地图还是多地图?对多图的字符串-整数对进行排序?我有点困惑。
      猜你喜欢
      • 2011-04-14
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 2012-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多