STL容器之multimap:多重映射容器用法详解
发布时间: 2024-02-23 18:58:21 阅读量: 111 订阅数: 28
# 1. 介绍multimap容器
## 1.1 multimap概述
Multimap是STL(标准模板库)中的一种关联容器,允许键值重复的情况下存储键值和值之间的映射关系。这和map的区别在于,map是一种“键-值”对的唯一映射,而multimap可以存储多个相同的键值对。
## 1.2 multimap与map的区别
- Map:存储的键值对唯一,即相同的键只能对应一个值。
- Multimap:允许相同的键对应多个值,即键值可以重复。
## 1.3 multimap的特点和优势
- 允许键值对重复,适用于有重复键的情况。
- 内部自动排序,基于红黑树实现,插入、删除、查找效率高。
- 对于需要按键排序、查找、删除数据的业务场景有很好的应用性能。
通过这些介绍,我们可以初步了解multimap容器的基本特点和适用场景。接下来我们将深入学习multimap的基本操作。
# 2. multimap的基本操作
在这一章节中,我们将介绍multimap容器的基本操作,包括定义与初始化、插入元素、删除元素等操作。让我们逐步深入了解multimap的基本用法。
### 2.1 multimap的定义与初始化
首先,让我们看一下如何定义和初始化一个multimap容器。在C++中,我们可以使用STL库中的multimap来实现多重映射,以下是一个简单示例:
```cpp
#include <iostream>
#include <map>
int main() {
std::multimap<int, std::string> myMultimap;
// 插入元素到multimap
myMultimap.insert(std::make_pair(1, "apple"));
myMultimap.insert(std::make_pair(2, "banana"));
myMultimap.insert(std::make_pair(1, "orange"));
// 遍历multimap中的所有元素
for (auto it = myMultimap.begin(); it != myMultimap.end(); ++it) {
std::cout << it->first << " : " << it->second << std::endl;
}
return 0;
}
```
上面的代码展示了如何定义一个存储int和string类型数据的multimap,并向其中插入了几个元素。接着,我们使用迭代器遍历multimap中的所有元素并输出它们的键值对。
### 2.2 插入元素到multimap
在multimap中插入元素可以使用`insert`函数,也可以使用`emplace`函数。当key值相同时,multimap允许插入重复的元素,示例如下:
```cpp
// 使用insert函数插入元素
myMultimap.insert(std::make_pair(1, "apple"));
// 使用emplace函数插入元素
myMultimap.emplace(1, "orange");
```
### 2.3 删除multimap中的元素
要删除multimap中的元素,可以使用`erase`函数,指定要删除的元素的key值即可。示例如下:
```cpp
// 删除key为1的所有元素
myMultimap.erase(1);
```
在本章中,我们学习了multimap容器的基本操作,包括定义与初始化、插入元素和删除元素。在下一章节中,我们将继续探讨multimap的遍历与查找操作。
# 3. multimap的遍历与查找
multimap作为一种多重映射容器,在实际使用中需要进行遍历和查找操作,本章将详细介绍multimap容器的遍历和查找方法。
#### 3.1 遍历multimap中的所有元素
在C++中,我们可以使用迭代器来遍历multimap中的所有元素。以下是一个示例代码:
```cpp
#include <iostream>
#include <map>
int main() {
std::multimap<int, std::string> myMultimap;
myMultimap.insert(std::make_pair(1, "apple"));
myMultimap.insert(std::make_pair(2, "banana"));
myMultimap.insert(std::make_pair(2, "orange"));
// 使用迭代器遍历multimap
for (auto it = myMu
```
0
0