C++ std::hash_map:键的作用是什么
C++ std::hash_map: What is the key's role
maps
和hash_maps
都设计成容纳pairs
和<key, data>
。我很清楚为什么映射应该有一个键来排序(更准确地说:树),但我不明白为什么hash_maps需要一个键,为什么它的数据不能单独被散列并放入哈希表中?
我既没有在文档中找到答案,也没有在网上搜索。
std::unordered_set
完全按照您描述的方式工作。然而,有时您想要从一个数据块映射到另一个数据块;这就是std::unordered_map
发挥作用的地方
走向碗柜。拿出电话簿,查一个号码。它有一个名字和数字之间的映射
您正在寻找set,其中一个键也是data。
c++提供了一些不同的风格:set, unordered_set等…
哈希映射,也称为Unordered Map
,使用KEY
的HASH
作为桶或槽的index
。换句话说,任何哈希表都需要一个哈希函数来将index
计算到桶或槽的数组中,从中可以找到正确的值。这些index
是哈希表的Key,在最佳情况下用于在O(1)时间内访问数据。
如果您想使用数据本身作为键,则合适的容器是std::set
或std::unordered_set
。map既包含键又包含值;std::map
和std::unordered_map
的区别在于数据的组织方式;std::map
按键排序,std::unordered_map
按键散列。
相关文章:
- "using namespace std;"在C++的作用是什么?
- 此代码中的" "是什么,它的基本作用是什么?
- 在模板参数中使用 {} 在 type_trait{} 中时,其作用是什么<T>?
- <<、>>算子在循环中的作用是什么
- 在c++中,减号和加号对字符串的作用是什么
- 窄集(_cast)的作用是什么
- 在这种情况下,#define 的作用是什么?
- 遍历模板参数包,没有争论的专业化的作用是什么?
- 在 c++ 中,没有 **std::fixed** 的 **std::setprecision()** 的作用是什么?
- 访问多个阵列时 CPU 缓存的作用是什么?
- 以下表达式的作用是什么:x = (a1,a2,..,n);
- 私人成员的作用是什么?
- 这段代码的作用是什么?
- *.exp文件的作用是什么
- ifstream::open()真正的作用是什么
- 如何在矩阵中使用指针.这行代码的作用是什么:int r=**(++b);
- 这个函数的作用是什么?与夹紧值有关
- 这个运算符()语法的作用是什么
- std::函数的模板参数中“const”修饰符和引用的作用是什么
- 字符串流在C++编程中的作用是什么