c++中map容器的用法
时间: 2025-03-02 22:00:01 浏览: 43
### C++ 中 `std::map` 容器的使用教程
#### 创建和初始化 `std::map`
在C++中,可以通过多种方式创建并初始化`std::map`容器。最常见的方式是通过构造函数来完成这一过程[^4]。
```cpp
#include <iostream>
#include <map>
int main() {
// 初始化一个空的 map
std::map<int, std::string> emptyMap;
// 使用列表初始化 map
std::map<char, int> charIntMap = {{'a', 1}, {'b', 2}};
}
```
#### 插入元素
向`std::map`中插入新元素有几种不同的方法。可以直接利用下标运算符或成员函数`insert()`来进行插入操作[^1]。
```cpp
// 下标运算符插入
charIntMap['c'] = 3;
// insert 函数插入单个元素
charIntMap.insert(std::make_pair('d', 4));
// 或者更简洁地使用 make_pair 的替代品
charIntMap.emplace('e', 5);
```
#### 访问元素
访问存储于`std::map`中的值通常借助迭代器或者下标运算符实现。需要注意的是,在使用下标运算符时如果指定的关键字不存在,则会自动创建一个新的条目。
```cpp
for (const auto& pair : charIntMap) {
std::cout << pair.first << ": " << pair.second << "\n";
}
// 输出特定 key 对应 value
if (charIntMap.find('a') != charIntMap.end()) {
std::cout << "Value of 'a': " << charIntMap.at('a') << "\n";
}
```
#### 删除元素
要移除某个关键字对应的项可以从集合里调用`erase()`方法,并传入相应的参数;也可以清除整个映射表内的所有项目。
```cpp
// 移除具体键值对
charIntMap.erase('b');
// 清空全部内容
charIntMap.clear();
```
#### 高级特性
除了基本的操作之外,还可以探索更多高级功能,例如自定义比较函数、运用`emplace()`直接构建对象而非先建立再转移等技术[^2]。
#### 交换两个 `std::map`
当需要快速互换两份数据集的时候,可以考虑采用`swap()`成员函数,这能有效减少不必要的复制开销[^5]。
```cpp
#include <iostream>
#include <map>
int main(void) {
std::map<char, int> m1 = { {'a', 1}, {'b', 2}, {'c', 3}, {'d', 4}, {'e', 5} };
std::map<char, int> m2;
m2.swap(m1);
std::cout << "After swapping:\n";
for (auto it = m2.begin(); it != m2.end(); ++it)
std::cout << it->first << " => " << it->second << '\n';
}
```
阅读全文
相关推荐

















