c++ - 如何将数组索引存储在映射中

标签 c++ boost dictionary

我的程序经常使用 boost::unordered_map ,该映射有大约 4000 万个条目。该程序不经常执行插入或删除操作。它只是使用 key 随机访问条目。

我想知道如果我将条目值(每个大约 1 KB)存储在平面数组(可能是 std::vector)中,并且我使用boost::unordered_map 存储键到该数组索引的映射。

谢谢, 崔

最佳答案

是的,这可以大大加快速度。事实上,这就是 Boost flat_map 的用途:)

文档相关:Non-standard containers

Using sorted vectors instead of tree-based associative containers is a well-known technique in C++ world. Matt Austern's classic article Why You Shouldn't Use set, and What You Should Use Instead (C++ Report 12:4, April 2000, PDF) was enlightening:

...

这给了你比你要求的更多的东西,因为你甚至不需要无关的索引。这为您提供了更多的引用位置和更低的内存占用。最重要的是,它可以降低复杂性(-> 更少的错误),并在接口(interface)方面直接替代 std::[unordered_]map

关于c++ - 如何将数组索引存储在映射中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21688557/

相关文章:

python - 如何更新Python中收到的每个数据的时间

python - 在 Python 3 中使用 Python 2 字典比较

java - 使用泛型类型中的 super 将 Map 流式传输到 Consumer 后使用 orElse 编译错误

C++ 现代字符串指针

c++ - 按字母顺序排列结构数组的问题。从 Z 到 A 有效,但不能从 A 到 Z

c++ - 使用 boost::assign::list_of 构造 std::vector 时的歧义

c++ - 使用内部 vector 成员创建类作为流访问类实例的容器

c++ - 引用调用和指针调用的区别

c++ - 选择整数类型的大小有哪些好的准则?

c++ - Visual Studio + boost 错误