C++ Map关联容器实例与常用成员函数详解
需积分: 50 184 浏览量
更新于2024-09-11
收藏 4KB TXT 举报
"C++ Map的实例使用说明"
在C++编程中,Map是一种关联容器,它允许我们存储键值对,其中每个键都是唯一的,值是与该键相关的数据。STL(Standard Template Library)中的map是双向映射表,提供了高效查找、插入和删除元素的功能。本文将通过实例演示如何在C++中使用map以及其主要成员函数。
首先,让我们了解如何包含所需的头文件并使用命名空间:
```cpp
#include <iostream>
#include <map>
#include <string>
using namespace std;
```
`map<string, int>`是一个模板,其中`string`是键的类型,`int`是值的类型。在`main()`函数中,我们创建了两个map对象`m1`和`m2`,它们分别用于存储字符串和整数对。
接下来,我们使用`insert()`函数插入元素。`insert()`函数有多种形式:
1. `pair<map<string, int>::iterator, bool> insert(pair<string, int>)`: 这种形式接收一个键值对,如果键不存在,则插入新元素并返回`true`,否则不插入并返回`false`。例如:
```cpp
pair<map<string, int>::iterator, bool> insert_pair = m1.insert(pair<string, int>("abc", 5));
cout << "insert()";
if (insert_pair.second) {
cout << "element inserted successfully!" << endl;
} else {
cout << "insert element failed!" << endl;
}
```
2. `void insert(input_iterator start, input_iterator end)`: 用于插入一系列键值对,这里一般通过`range-based for`循环实现,但在这里没有展示。
3. `pair<iterator, bool> insert(const pair<KEY_TYPE, VALUE_TYPE>& val)`:这是另一种插入单个键值对的方式。
4. `insert()`还可以在已存在的键上更新值,例如:
```cpp
m1["ksd"] = 40; // 更新键"ksd"的值
```
`begin()`和`end()`函数返回迭代器,分别指向map的第一个和最后一个元素(但不包括`end()`)。它们可以用于遍历map中的所有键值对:
```cpp
cout << endl << "begin() & end():" << endl;
for (auto it = m1.begin(); it != m1.end(); ++it) {
cout << "Key: " << it->first << ", Value: " << it->second << endl;
}
```
`reverse_iterator`是反向迭代器,它从容器的末尾向前遍历。在这个例子中没有使用,但如果需要从后向前遍历,可以这样操作:
```cpp
for (auto rit = m1.rbegin(); rit != m1.rend(); ++rit) {
cout << "Key: " << rit->first << ", Value: " << rit->second << endl;
}
```
总结来说,C++的map容器提供了一种方便的方法来存储和管理键值对,通过`insert()`函数可以高效地添加或更新元素,而`begin()`和`end()`(及`rbegin()`和`rend()`)则用于遍历容器。理解这些基本操作有助于在实际编程中灵活运用map进行数据存储和查询。
2020-12-31 上传
2020-09-03 上传
2024-09-24 上传
2024-11-12 上传
2024-08-22 上传
2024-09-03 上传
2024-10-14 上传
2024-11-16 上传
李渊
- 粉丝: 16
- 资源: 33
最新资源
- Java集合ArrayList实现字符串管理及效果展示
- 实现2D3D相机拾取射线的关键技术
- LiveLy-公寓管理门户:创新体验与技术实现
- 易语言打造的快捷禁止程序运行小工具
- Microgateway核心:实现配置和插件的主端口转发
- 掌握Java基本操作:增删查改入门代码详解
- Apache Tomcat 7.0.109 Windows版下载指南
- Qt实现文件系统浏览器界面设计与功能开发
- ReactJS新手实验:搭建与运行教程
- 探索生成艺术:几个月创意Processing实验
- Django框架下Cisco IOx平台实战开发案例源码解析
- 在Linux环境下配置Java版VTK开发环境
- 29街网上城市公司网站系统v1.0:企业建站全面解决方案
- WordPress CMB2插件的Suggest字段类型使用教程
- TCP协议实现的Java桌面聊天客户端应用
- ANR-WatchDog: 检测Android应用无响应并报告异常