用于多键查找的C ++映射与多映射

时间:2012-01-05 21:50:44

标签: c++ map multimap

我的数据在概念上看起来像:

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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