map,unordered_map, set, unordered_set什么时候用哪个
时间: 2024-03-29 15:32:41 浏览: 63
map、unordered_map、set和unordered_set都是C++ STL中的容器,用于存储和操作数据。
1. map:是一个有序的关联容器,存储键值对,并按照键的顺序进行排序。它基于红黑树实现,查找、插入和删除的时间复杂度为O(logN)。当需要按照键进行排序或者需要快速查找某个键值对时,可以选择使用map。
2. unordered_map:是一个无序的关联容器,存储键值对,并根据键的哈希值进行组织。它基于哈希表实现,查找、插入和删除的平均时间复杂度为O(1)。当不需要按照键进行排序,而是更关注快速的插入和查找操作时,可以选择使用unordered_map。
3. set:是一个有序的容器,存储唯一的元素,并按照元素的顺序进行排序。它基于红黑树实现,查找、插入和删除的时间复杂度为O(logN)。当需要按照元素进行排序或者需要快速判断某个元素是否存在时,可以选择使用set。
4. unordered_set:是一个无序的容器,存储唯一的元素,并根据元素的哈希值进行组织。它基于哈希表实现,查找、插入和删除的平均时间复杂度为O(1)。当不需要按照元素进行排序,而是更关注快速的插入和查找操作时,可以选择使用unordered_set。
相关问题
unordered_multiset,unordered_set,unordered_multimap,unordered_map,set,map,multiset,multimap的区别和特点 unordered_multiset,unordered_set,unordered_multimap,unordered_map,set,map,multiset,multimap的区别和特点
这些容器都是C++ STL(标准模板库)中的关联容器,用于存储和管理键值对数据。它们的区别和特点如下:
1. unordered_multiset和unordered_set:
- 无序容器,使用哈希表实现。
- unordered_multiset允许重复的元素,而unordered_set不允许。
- 插入、查找和删除的平均时间复杂度为常数时间(O(1))。
- 元素的顺序是无序的,不会根据插入顺序或键值排序。
2. unordered_multimap和unordered_map:
- 无序容器,使用哈希表实现。
- unordered_multimap允许键重复,而unordered_map不允许。
- 插入、查找和删除的平均时间复杂度为常数时间(O(1))。
- 元素的顺序是无序的,不会根据插入顺序或键值排序。
3. set和map:
- 有序容器,使用红黑树实现。
- set中存储唯一的键,map中存储键值对。
- 插入、查找和删除的平均时间复杂度为对数时间(O(log n))。
- 元素的顺序是按照键值排序的。
4. multiset和multimap:
- 有序容器,使用红黑树实现。
- 允许重复的键。
- 插入、查找和删除的平均时间复杂度为对数时间(O(log n))。
- 元素的顺序是按照键值排序的。
总结:unordered容器提供了更快的插入、查找和删除操作,但不保证元素顺序;而有序容器保证元素按照键值有序存储,但操作速度相对较慢。选择使用哪个容器取决于具体的需求。
unordered_map和unordered_set
unordered_map和unordered_set是C++ STL库中的两个容器,它们都是基于哈希表实现的。
unordered_map是一个关联容器,它将键值对存储在哈希表中,可以快速地查找和访问元素。它的键和值可以是任何类型,但是键必须是唯一的。与map相比,unordered_map的插入、删除和查找操作都更快,但是它的元素是无序的。
unordered_set是一个集合容器,它存储唯一的元素,并且元素是无序的。它的元素可以是任何类型,但是必须是唯一的。与set相比,unordered_set的插入、删除和查找操作都更快,但是它的元素是无序的。
阅读全文
相关推荐
















