C++ 多重映射容器(multimap)使用示例与解释
#include
#include
using namespace std;
int main() { // map<key_t, value_t> //mp["one"] = 1; //error no [] multimap<string, int> mp; mp.insert(make_pair("one", 20)); mp.insert(make_pair("two", 20)); mp.insert(make_pair("two", 10)); mp.insert(make_pair("two", 30)); mp.insert(make_pair("two", 40)); cout << "count two " << mp.count("two") << endl; string key = "two"; // pair< multimap<string, int>::iterator, multimap<string, int>::iterator > pr = mp.equal_range(key); auto pr = mp.equal_range(key); auto it = pr.first; for (it = pr.first; it != pr.second; it++) { cout << it->first << " " << it->second << endl; } return 0; }
// 解释每行代码内容:
-
#include <iostream>: 包含输入输出流的库,用于标准输入输出操作。 -
#include <vector>: 包含向量容器的库,用于存储和操作动态数组。 -
#include <stack>: 包含栈容器的库,用于实现后进先出 (LIFO) 的数据结构。 -
#include <queue>: 包含队列容器的库,用于实现先进先出 (FIFO) 的数据结构。 -
#include <list>: 包含链表容器的库,用于存储和操作双向链表。 -
#include <map>: 包含映射容器的库,用于存储键-值对,并根据键进行快速查找。 -
#include <algorithm>: 包含算法库,用于执行常见的算法操作,如排序、查找等。 -
multimap<string, int> mp;: 创建了一个可存储键为字符串类型、值为整数类型的多重映射容器对象mp。 -
mp.insert(make_pair("one", 20));: 插入了一个键值对,键为'one',值为20,将其添加到mp中。 -
mp.insert(make_pair("two", 20));: 插入了一个键值对,键为'two',值为20,将其添加到mp中。 -
mp.insert(make_pair("two", 10));: 插入了一个键值对,键为'two',值为10,将其添加到mp中。 -
mp.insert(make_pair("two", 30));: 插入了一个键值对,键为'two',值为30,将其添加到mp中。 -
mp.insert(make_pair("two", 40));: 插入了一个键值对,键为'two',值为40,将其添加到mp中。 -
cout << "count two " << mp.count("two") << endl;: 输出字符串'count two '和键为'two'的键值对在mp中的数量。 -
string key = "two";: 创建了一个字符串变量key,并赋值为'two'。 -
auto pr = mp.equal_range(key);: 创建了一个auto类型变量pr,并调用mp.equal_range()函数来获取键为key的键值对范围。 -
auto it = pr.first;: 创建了一个auto类型变量it,并将其初始化为pr.first,即键值对范围的起始位置。 -
for (it = pr.first; it != pr.second; it++) {: 循环遍历键值对范围,从起始位置it开始,直到结束位置pr.second,每次迭代递增it。 -
cout << it->first << " " << it->second << endl;: 输出当前迭代的键值对的键和值。 -
return 0;: 返回程序执行成功的标志。
原文地址: https://www.cveoy.top/t/topic/quBp 著作权归作者所有。请勿转载和采集!