查询一个元素是否出现在集合中的快速方法,哈希表
一般会使用如下三种数据结构
- 数组
- set
- map
set
c++中对于set提供了三种数据结构
集合 | 底层实现 | 是否有序 | 数值是否可以重复 | 是否能更改数值 | 查询效率 | 增删效率 |
---|---|---|---|---|---|---|
std::set | 红黑树 | 有序 | 否 | 否 | O(logn) | O(logn) |
std::multiset | 红黑树 | 有序 | 是 | 否 | O(logn) | O(logn) |
std::unordered_set | 哈希表 | 无序 | 否 | 否 | O(1) | O(1) |
map
集合 | 底层实现 | key是否有序 | key是否可以重复 | key是否能更改数值 | 查询效率 | 增删效率 |
---|---|---|---|---|---|---|
std::map | 红黑树 | 有序 | 否 | 否 | O(logn) | O(logn) |
std::multimap | 红黑树 | 有序 | 是 | 否 | O(logn) | O(logn) |
std::unordered_map | 哈希表 | 无序 | 否 | 否 | O(1) | O(1) |
unordered_map操作
https://blog.csdn.net/lizhengze1117/article/details/96728468