用于多键查找的 C++ map 与 multimap

标签 c++ dictionary multimap

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

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

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

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

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

最佳答案

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

关于用于多键查找的 C++ map 与 multimap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8750346/

相关文章:

python - 抓取链接和标题 - 使用 beautifulsoup 存储在字典中

json - 将 Map<String, String> 转换为 POJO

python - 如何深入字典并删除最深的键级别

c++ - 通过一对 key 搜索 multimap

java - 如何访问 Guava 多重映射的所有值?

c++ - 虚函数返回的枚举协方差

c++ - 在 C++ 中处理许多进程的中央数据缓冲区

c++ - 尝试使用分配器构造 std::list 时失败

c++ - Visual C++ 2015 在使用 decltype(auto) 时给出 C4552 警告

Java优先级队列