C++ Map关联容器实例与常用成员函数详解

需积分: 50 21 下载量 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进行数据存储和查询。