unordered_map与map在C++中的区别
时间: 2024-01-09 13:23:19 浏览: 32
unordered_map和map是C++中的两种容器,它们在底层数据存储和功能上有一些区别。
unordered_map是使用哈希表实现的,而map是使用红黑树实现的。因此,unordered_map的数据存储是无序的,而map的数据存储是有序的。这也是unordered_map的一个特点,它可以在常数时间内进行插入、删除和查找操作,而map则需要在对数时间内进行这些操作。
另外,unordered_map和map在使用上也有一些区别。unordered_map的键值对是唯一的,而map的键值对可以重复。此外,unordered_map的查找操作是通过哈希值来进行的,而map的查找操作是通过比较键值来进行的。
下面是一个示例代码,演示了unordered_map和map的使用区别:
```cpp
#include <iostream>
#include <unordered_map>
#include <map>
int main() {
// 使用unordered_map
std::unordered_map<int, std::string> unorderedMap;
unorderedMap.insert({1, "apple"});
unorderedMap.insert({2, "banana"});
unorderedMap.insert({3, "orange"});
std::cout << "unordered_map:" << std::endl;
for (const auto& pair : unorderedMap) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
// 使用map
std::map<int, std::string> map;
map.insert({3, "orange"});
map.insert({1, "apple"});
map.insert({2, "banana"});
std::cout << "map:" << std::endl;
for (const auto& pair : map) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
```
输出结果为:
```
unordered_map:
1: apple
2: banana
3: orange
map:
1: apple
2: banana
3: orange
```
可以看到,unordered_map的输出结果是无序的,而map的输出结果是有序的。