c++ - 最快的预打包键值对搜索

标签 c++ algorithm data-structures boost stl

我想用c++(伪代码)实现以下数据结构:

Map<Integer, Integer>    // Key->Value pairs

Map.put(1,6);
Map.put(2,5);
Map.put(6,89);
Map.put(7,23);
... etc ...

Map.get(2) .... returns 5

换句话说,给定一对整数,其中一个是查找键,让我从其中一个键检索值的最快库实现是什么? Value->Key 的反向搜索不需要。

此 map 的大小可能约为 10 000 个元素。

我假设二叉树搜索会产生最快的查找时间? std:map 是最好用的工具吗? boost 是否提供任何替代方案?

最佳答案

使用unordered_map ( HashMap )或 map (二叉树)- 可能 unordered_map会更快。此外,如果您的键值限制为 10000,则 vector<int>将保证恒定时间查找 - 对应该“不存在”的 vector 元素使用“魔法”值。

unordered_map是 TR1 和 c++0x 的一部分——它不是 c++03 中的标准。许多实现都支持它。 Boost 也有一个 unordered_map .

mapvector都是标准的。

  • map对应java TreeMap
  • unordered_map对应java HashMap
  • vector对应java ArrayList

关于c++ - 最快的预打包键值对搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5254560/

相关文章:

c++ - std::move 作为参数的参数类型

c++ - 是否有用于模板使用的优化 C++ 编译器?

c++ - 使用 Boost Spirit Classic 解析 SQL INSERT

c++ - 偏移和传递 vector 引用

java - 计算 Java 中的基本操作

java - 如何模块化 A* 中的启发式(运行时启发式)

algorithm - 大 O 分析 - 具有 3 种不同时间复杂度的 for-if-do something 语句

data-structures - 优先队列和堆

algorithm - 从每个列表中查找至少一个数字所属的最小范围

algorithm - 搜索引擎/算法找到最接近的连续(浮点)采样信号?