在C++的标准模板库(STL)中,std::multimap是一个关联容器,它允许存储多个具有相同键(key)的元素。与std::map不同,std::map中的每个键必须是唯一的,而std::multimap则没有这个限制。这使得std::multimap在某些特定场景下非常有用,比如需要存储多个值与同一个键相关联的情况。
std::multimap的基本概念
(1) 定义
std::multimap是一个模板类,它存储的元素是键值对(key-value pairs),其中键不需要唯一。这些元素根据键自动排序。std::multimap允许你高效地基于键检索、插入和删除元素。
(2) 特性
- 自动排序:std::multimap中的元素根据其键自动排序。你可以使用比较函数来自定义排序规则。
- 非唯一键:与std::map不同,std::multimap允许存储具有相同键的多个元素。
- 动态大小:std::multimap是一个动态容器,可以在运行时添加和删除元素。
- 高效的查找操作:由于元素是排序的,所以基于键的查找操作非常高效,通常具有对数时间复杂度。
使用std::multimap
(1) 包含头文件
要使用std::multimap,你需要包含头文件:
#include
(2) 创建和初始化
你可以使用不同的方法来创建和初始化std::multimap:
// 创建一个空的multimap
std::multimap mmap;
// 在创建时初始化multimap
std::multimap mmap = {{1, "apple"}, {2, "banana"}, {1, "cherry"}};
// 使用insert函数添加元素
mmap.insert({3, "date"});
mmap.insert(std::pair(4, "elderberry"));
(3) 访问元素
你可以使用迭代器或范围基础的for循环来访问std::multimap中的元素:
for (const auto& pair : mmap) {
std::cout