c++ unordered_map 和map的区别
时间: 2023-11-01 16:53:23 浏览: 210
C++11 unordered_map与map(插入,遍历,Find)效率对比。
unordered_map 和 map 是 C++ STL 提供的两种不同的关联容器,它们之间有一些区别:
1. 内部实现:map 使用红黑树(RB-tree)实现,它保持元素的有序性,因此可以进行范围查询和有序遍历;而 unordered_map 使用哈希表(hash table)实现,它根据键的哈希值来存储和访问元素,不保持元素的有序性。
2. 查找效率:由于 unordered_map 使用哈希表,它的查找操作时间复杂度平均为 O(1),最坏情况下为 O(n);而 map 使用红黑树,查找操作的时间复杂度为 O(log n),其中 n 是元素个数。
3. 插入和删除效率:unordered_map 在哈希表中插入和删除元素的效率比较高,平均时间复杂度为 O(1);而 map 在红黑树上插入和删除元素的效率也比较高,时间复杂度为 O(log n)。
4. 有序性:map 保持元素的有序性,因此可以进行范围查询和有序遍历;而 unordered_map 不保持元素的有序性,因此无法进行范围查询和有序遍历。
综上所述,如果你需要按照键的顺序进行操作或者需要进行范围查询和有序遍历,可以选择 map;如果你对有序性没有特别要求,而更关注插入和查找的效率,可以选择 unordered_map。
阅读全文