multimap与multiset

multimap

介绍

基本与 map 相同,但除去了 operator[], 因为其特点是相同 key 的值在 multimap 中可以多个存在。需要强调的,与 map 有明显不同的常用方法:

常用方法

iterator insert(value) 插入键值对,返回插入后该元素的迭代器

size_type erase(key) 删除所有关键字与 key 相等的键值对,返回删除的元素个数

void erase(iterator pos) 删除对应位置元素

size_type count(key) 统计关键字为 key 的元素个数

iterator find(key) 查找关键字与 key 相等的键值对,返回对应位置的迭代器。如果不存在则返回 end()如果有多个关键字与 key 相等的键值对,返回的迭代器指向哪一个不定。

pair<iterator, iterator> equal_range(key) 查找关键字与 key 相等的键值对,返回迭代器对,描述与 key 相等的键值对的区间 [first, last)

代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <map>

using namespace std;

typedef multimap<int, char>::iterator iterType;

int main() {
multimap<int, char> mp;
mp.insert(make_pair(1, 'A'));
mp.insert(make_pair(2, 'B'));
mp.insert(make_pair(2, 'C'));
mp.insert(make_pair(2, 'D'));
mp.insert(make_pair(4, 'E'));
mp.insert(make_pair(3, 'F'));
pair<iterType, iterType> range = mp.equal_range(2);
for (iterType it = range.first; it != range.second; ++it) {
cout << it->first << ' ' << it->second << '\n';
}
return 0;
}
1
2
3
4
5
output

2 B
2 C
2 D

multiset

介绍

与上述 multimap 的用法基本相同,只是每个元素只有一个值 key,而没有对应的 value

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×