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

C++ map versus multimap for multi-key lookup

本文关键字:映射 查找 关键字 用于 C++      更新时间:2023-10-16

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

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

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

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

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

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

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