stl 里map和unordered_map用法
时间: 2023-09-20 19:14:47 浏览: 108
对于STL中的`map`和`unordered_map`,它们都是关联容器,用于存储键值对。它们之间的主要区别在于底层实现和性能特征。
`map`是基于红黑树实现的有序容器。它按照键的顺序存储元素,并且支持插入、查找和删除操作的平均时间复杂度为O(log n)。因为有序性质,`map`可以提供范围查找和按照键的顺序遍历等功能。
`unordered_map`是基于哈希表实现的无序容器。它使用哈希函数将键映射到桶中,并且支持插入、查找和删除操作的平均时间复杂度为O(1)。由于无序性质,`unordered_map`不能提供范围查找和按照键的顺序遍历等功能,但在大多数情况下具有更好的性能。
下面是它们的一些常见用法示例:
使用`map`:
```cpp
#include <iostream>
#include <map>
int main() {
std::map<std::string, int> myMap;
// 插入键值对
myMap["Alice"] = 25;
myMap["Bob"] = 30;
// 查找元素
std::cout << myMap["Alice"] << std::endl; // 输出25
// 遍历所有键值对
for (const auto& pair : myMap) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
```
使用`unordered_map`:
```cpp
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<std::string, int> myMap;
// 插入键值对
myMap["Alice"] = 25;
myMap["Bob"] = 30;
// 查找元素
auto iter = myMap.find("Alice");
if (iter != myMap.end()) {
std::cout << iter->second << std::endl; // 输出25
}
// 遍历所有键值对
for (const auto& pair : myMap) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
```
希望这些示例能帮助你理解`map`和`unordered_map`的用法。如果还有其他问题,请随时提问!
阅读全文