在unordered_map中搜索的最佳实践
Best practices for searching in unordered_map
我想创建一个 std::unordered_map < int, std::string >
或std::unordered_map< std::string, int >
。在此地图中,我将存储字符串及其整数表示。我将仅在代码(硬编码对)中填写此地图。
我需要将输入字符串转换为其int值 - 在地图中找到。因此,我只需要在运行时在地图中搜索即可。在这一点上,我在转换时需要最好的性能。在最好的情况下-O(1)。
我的问题:
- 我应该使用字符串作为键还是int?
- 我应该定义自己的哈希功能吗?
- 两种情况下的最佳性能找到功能是钥匙对的字符串/int/string?
std::map
或std::unordered_map
或其multi
-CounterParts均构建相同 - 它们将键(第一个模板参数)映射到一个值(第二个模板参数)。如果要获取O(1)(未排序)或O(log(n))(MAP)行为,则需要定义为要获得值的数据类型的键。
当您想找到给定字符串的积分值时,在您的情况下进行的方法是std::unordered_map<std::string, int>
。
一个反示例将在错误代码中查找名称,通常您会在函数(或放置在errno
中)返回的特定错误代码,并希望获得e的字符串值。G。用于打印错误。然后您将拥有std::unordered_map<int, std::string>
(前提
编辑:
定义自己的哈希功能是Konstantin在评论-STD :: String提供自己的Hash代码功能中提到的那种过早优化,该功能适合大多数用例。只有当您发现自己的哈希速度太慢时,请尝试找到一种更快的方法。
由于您的所有字符串都是硬编码的,因此您可能想看看完美的哈希,e。G。在gperf变体中。
相关文章:
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 有根的二进制搜索树.保留与其父级的链接
- 从整数向量向量搜索整数向量的最佳算法
- 比较/搜索数组中多个整数的最佳解决方案
- 在unordered_map中搜索的最佳实践
- 从基于矢量的二叉搜索树中删除节点的最佳方法
- 哪种数据结构是在一个向量中搜索和计数对象对的最佳数据结构
- 一半填充二进制搜索树进行测试的最佳方法
- 二进制搜索树最佳拟合算法:输出不正确
- 搜索子集、算法(最佳或启发式)
- Qt5 中字符串搜索的最佳容器
- 在C++中存储和搜索数字的最佳方式
- 使用std::vector将数组的最佳匹配搜索到矩阵中
- 搜索std::集的最佳方式
- 如何以最佳、最简单的方式在文件中搜索
- 在N个未排序的数字中搜索给定值的最佳方法
- 在C++中存储和搜索短语的最佳数据结构
- 使用整数列表文档进行全文搜索的最佳方法
- 基于Korf 1992的c++实现递归最佳优先搜索的问题
- 在C++中实现 2D 间隔搜索的最佳方法是什么?