Boost::Multiindex vs string indexed boost::unordered_map
Boost::Multiindex vs string indexed boost::unordered_map
我需要一个唯一元素的容器,可以用int的三元组访问,每个int可以超过1.000.000.000。
(实际上只有少数元素会被填充,实际上这些元素本身就是boost::unordered_map)。
是否有一个多索引数组,如boost::multiindex(或其他我不知道的东西)或只是一个boost::unordered_map与一个组合字符串作为一个键更快?
多索引不是您想要的,您似乎想要一个类型为三元组的单一索引。(除非你真的想要三个独立的索引;如果我误解了,请留下评论。
不要使用字符串,天哪没有。只使用三元组作为键:
typedef std::tuple<int, int, int> key_type;
如果你使用std::map<key_type, T>
,你得到对数查找,这可能是足够的,我认为你甚至不需要做任何更多的工作(不确定字典比较是否默认定义为元组)。
如果您想使用std::unordered_map<key_type, T>
(或boost版本),则必须定义一个哈希函数。Boost已经有一个元组,我想,但c++ 11没有;但这是很容易实现自己基于hash_combine()
,你可以只裁剪出的Boost代码。
相关文章:
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 使用一个考虑到std::map中键值的滚动或换行的键
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 允许从 std::map 的密钥窃取资源?
- 有没有办法对std::unordered_set、std::unrdered_map、std::set、std::map
- 将重物插入std::map
- 使用通用值初始化 std::map,不重复
- 仅包含可移动 std::map 的类的移动构造函数不起作用
- C++:当所有条目都保证是唯一时,替代 std::map
- 使用模板化的键类型定义 std::map,该键类型基于作为参数接收的函数
- 如果 KEY 是 std::list 或 std::vector 而不是值,那么 std::map 的默认行为是什么?
- 使用字符数组作为 Map 中的键
- C++如何创建 std::map
- C++ equivalent to Java Map getOrDefault?
- 从其他容器中移动构造"std::map"
- 如何使用 uint64_t 键类型从 std::map<int, std::string> 返回值?
- 将 std::map::emplace 与返回 shared_ptr 的函数一起使用是否正确?
- C++中 std::map 的运行时复杂度是多少?
- unordered map -在c++ std::unordered_map中预分配桶