在C++标准模板库(STL)中,multimap 是一个非常有用的关联容器。与 map 不同,multimap 允许同一个键(key)对应多个值(value),非常适合处理“一对多”关系的数据。本教程将从基础概念到实际用法,手把手带你掌握 multimap 的使用方法,即使是编程小白也能轻松上手。

multimap 是 C++ STL 中的一个容器,定义在头文件 <map> 中。它的主要特点包括:
pair<const Key, T>)map 最大的区别)常见的应用场景包括:
要使用 multimap,首先需要包含头文件:
#include <map>#include <iostream>using namespace std;
声明一个 multimap 的基本语法如下:
multimap<KeyType, ValueType> myMultimap;
例如,创建一个存储字符串键和整数值的 multimap:
multimap<string, int> scores;
可以使用 insert() 方法插入键值对:
scores.insert(make_pair("Alice", 85));scores.insert(make_pair("Bob", 90));scores.insert(make_pair("Alice", 92)); // 同一个键可以多次插入也可以使用 C++11 的花括号初始化:
scores.insert({"Charlie", 78});由于 multimap 是有序容器,遍历时会按键的升序输出:
for (auto it = scores.begin(); it != scores.end(); ++it) { cout << it->first << ": " << it->second << endl;}// 或者使用范围 for(C++11)for (const auto& pair : scores) { cout << pair.first << ": " << pair.second << endl;}使用 equal_range() 可以获取某个键对应的所有值:
auto range = scores.equal_range("Alice");for (auto it = range.first; it != range.second; ++it) { cout << "Alice's score: " << it->second << endl;}使用 count() 方法:
cout << "Alice has " << scores.count("Alice") << " scores." << endl;#include <iostream>#include <map>using namespace std;int main() { multimap<string, int> studentScores; // 插入数据 studentScores.insert({"张三", 88}); studentScores.insert({"李四", 92}); studentScores.insert({"张三", 95}); studentScores.insert({"王五", 78}); studentScores.insert({"张三", 85}); // 遍历所有数据 cout << "所有学生成绩:\n"; for (const auto& p : studentScores) { cout << p.first << " -> " << p.second << endl; } cout << "\n张三的所有成绩:\n"; auto range = studentScores.equal_range("张三"); for (auto it = range.first; it != range.second; ++it) { cout << it->second << " "; } cout << endl; cout << "\n张三共有 " << studentScores.count("张三") << " 门成绩。" << endl; return 0;}| 特性 | map | multimap |
|---|---|---|
| 是否允许重复键 | 否 | 是 |
| [] 操作符 | 支持 | 不支持 |
| 典型用途 | 一对一映射 | 一对多映射 |
multimap 是 C++ STL 中处理“一对多”关系的强大工具。它继承了关联容器的高效性和自动排序特性,同时突破了 map 键唯一性的限制。通过本教程,你应该已经掌握了如何声明、插入、遍历和查询 multimap 中的数据。
记住几个关键点:
multimap 支持重复键,适合表示多重映射关系[] 操作符(因为一个键对应多个值)equal_range() 和 count() 来处理重复键希望这篇关于 C++ multimap 的教程能帮助你更好地理解和使用这个强大的 STL 容器!
本文由主机测评网于2025-12-02发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025122153.html