C++ Map完全指南:构造、插入、查找、删除与交换
需积分: 13 35 浏览量
更新于2024-09-13
收藏 36KB PDF 举报
“最全的C++ map用法”
在C++编程中,`std::map` 是一个关联容器,它提供了键值对的存储。这个容器以红黑树(一种自平衡二叉查找树)的形式组织元素,保证了在平均情况下的高效查找、插入和删除操作。下面是对C++ `map` 容器的详细讲解:
1. map构造函数:
`map` 可以通过不同的类型组合来初始化,例如:
- `map<string, int> mapString;` 创建一个字符串到整数的映射。
- `map<int, string> mapInt;` 创建一个整数到字符串的映射。
- `map<string, char> mapStringChar;` 创建一个字符串到字符的映射。
- `map<char, string> mapChar;` 创建一个字符到字符串的映射。
- `map<char, int> mapCharInt;` 创建一个字符到整数的映射。
- `map<int, char> mapIntChar;` 创建一个整数到字符的映射。
2. map添加数据:
- 使用 `insert` 函数插入元素:`maplive.insert(pair<int, string>(102, "alive"));`
- 使用 `value_type` 和 `insert` 函数插入元素:`maplive.insert(map<int, string>::value_type(321, "hai"));`
- 通过下标操作符 `[]` 插入或修改元素:`maplive[112] = "April";`
3. map中元素的查找:
- 使用 `find` 函数查找元素:`map<int, string>::iterator l_it = maplive.find(112);` 如果找到,迭代器指向对应键值的元素;否则,迭代器指向容器的尾部。
4. map中元素的删除:
- 使用 `find` 获取迭代器,然后通过 `erase` 删除元素:`map<int, string>::iterator l_it = maplive.find(112); if (l_it != maplive.end()) maplive.erase(l_it);`
5. map中swap的用法:
- `swap` 函数用于交换两个 `map` 容器的内容,而不是交换容器内的元素。例如:
```cpp
map<int, int> m1, m2, m3;
m1.insert(pair<int, int>(1, 10));
// ...
m1.swap(m2); // 现在m1和m2的内容互换
```
除了这些基本操作,`map` 还支持其他功能,如迭代器遍历、容量查询(`empty`, `size`, `max_size`)、容量调整(`reserve`, `shrink_to_fit`)以及查找相关操作(`count`, `lower_bound`, `upper_bound`)。在实际编程中,`map` 容器常用于创建索引、实现关联数据结构和快速查找等功能。了解并熟练掌握 `map` 的用法对于提高C++编程效率至关重要。
2012-08-06 上传
2012-05-08 上传
2019-12-08 上传
2023-05-26 上传
2024-10-12 上传
2020-09-02 上传
2020-12-31 上传
2021-01-20 上传
2021-09-14 上传
qinghui8899
- 粉丝: 0
- 资源: 1
最新资源
- NIST REFPROP问题反馈与解决方案存储库
- 掌握LeetCode习题的系统开源答案
- ctop:实现汉字按首字母拼音分类排序的PHP工具
- 微信小程序课程学习——投资融资类产品说明
- Matlab犯罪模拟器开发:探索《当蛮力失败》犯罪惩罚模型
- Java网上招聘系统实战项目源码及部署教程
- OneSky APIPHP5库:PHP5.1及以上版本的API集成
- 实时监控MySQL导入进度的bash脚本技巧
- 使用MATLAB开发交流电压脉冲生成控制系统
- ESP32安全OTA更新:原生API与WebSocket加密传输
- Sonic-Sharp: 基于《刺猬索尼克》的开源C#游戏引擎
- Java文章发布系统源码及部署教程
- CQUPT Python课程代码资源完整分享
- 易语言实现获取目录尺寸的Scripting.FileSystemObject对象方法
- Excel宾果卡生成器:自定义和打印多张卡片
- 使用HALCON实现图像二维码自动读取与解码