stl容器map详解
时间: 2024-09-06 07:05:37 浏览: 56
STL中的map是一个关联容器,它存储元素组成的关键字-值对(key-value pairs)。每个元素的键都是唯一的,并用于快速检索存储的值。map在C++标准库中被广泛使用,它基于红黑树实现,因此能够提供良好的效率保证,其插入、删除和查找操作通常具有对数时间复杂度。
map的主要特性如下:
1. 自动排序:map中的元素会根据键自动排序,通常是升序排列。
2. 唯一键:每个键在map中只能出现一次,不可以重复。
3. 快速查找:基于其红黑树的实现,map能够提供快速的查找、插入和删除操作。
4. 迭代器支持:map支持双向迭代器,可以从头到尾或从尾到头遍历元素。
map的常用操作包括:
- `insert`:插入一个新元素或者多个元素。
- `erase`:删除一个元素或者删除一组元素。
- `find`:通过键查找对应的值。
- `count`:计算特定键的元素数量(对于map来说,count的结果要么是0要么是1,因为键是唯一的)。
- `lower_bound`/`upper_bound`:查找键的下界或上界。
一个简单的map使用示例代码如下:
```cpp
#include <iostream>
#include <map>
int main() {
std::map<std::string, int> ages;
// 插入元素
ages.insert(std::make_pair("Tom", 20));
ages.insert(std::make_pair("Bob", 25));
ages.insert(std::make_pair("Alice", 22));
// 查找元素
auto it = ages.find("Bob");
if (it != ages.end()) {
std::cout << "Bob is " << it->second << " years old." << std::endl;
} else {
std::cout << "Bob not found." << std::endl;
}
// 遍历map
for (const auto &pair : ages) {
std::cout << pair.first << " is " << pair.second << " years old." << std::endl;
}
return 0;
}
```
阅读全文