我的数据在概念上看起来像:
"BLUE" : (3 , 10, 15, 1220, 44040)
"RED" : (44, 523, 122143, 323233)
"BANANA" : (....)
构建时间并不重要。对于我有多个键的查找,我想要组合所有值列表,并对它们进行排序;我应该在C ++中将其表示为地图或多图,以获得最快的结果吗?
换句话说,由于附加到键的值向量是可变长度的,我应该有一个带键的映射:vector,还是带有key1的多图:int1,key1:int2等?
目的是编写一个函数,其中input =(key1,....,keyN),输出是所有值的排序列表。
答案 0 :(得分:1)
map<string, vector<int>>
解决方案更易于理解和编写代码,并且可能在空间方面更有效,因为您要将值组安排到连续存储中,而不是为每个值创建节点。出于同样的原因,它在算法上也可能更有效。
答案 1 :(得分:1)
如果您在进行任何查找之前只打算填充一次,那么最好的方法是在填充之后对其进行排序:vector<pair<string, int> >
。