多重映射(Multimap)是 C++ STL(标准模板库)的一部分。多重映射是类似的集合,例如映射,用于存储已排序的键/值对,但是与仅存储唯一键的映射不同,多重映射可以具有重复的键。
multimap 语法
要使用 multimap 多重映射,必须先引入 <map>
头文件。
#include <map>
multimap 的类模板定义如下:
template < class Key, // multimap::key_type
class T, // multimap::mapped_type
class Compare = less<Key>, // multimap::key_compare
class Alloc = allocator<pair<const Key,T> > // multimap::allocator_type
> class multimap;
multimap 参数说明:
参数 |
说明 |
key |
要存储在多重映射中的键数据类型。 |
type |
要存储在多重映射中的值的数据类型。 |
compare |
一个比较类,该类使用两个bool类型相同的参数并返回一个值。此参数是可选的,二进制谓词less是默认值。 |
alloc |
分配器对象的类型。此参数是可选的,默认值为分配器。 |
multimap 示例
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main(void)
{
multimap<string, string> m = {
{"China","Shanghai"},
{"China", "Guangzhou"},
{"Thailand", "Chiang Mai"},
{"Netherlands", "Amsterdam"},
{"United Kingdom", "London"},
{"United States", "Los Angeles"}
};
cout << "Size of map m: " << m.size() << endl;
cout << "Elements in m: " << endl;
for (multimap<string, string>::iterator it = m.begin(); it != m.end(); ++it)
{
cout << " [" << (*it).first << ", " << (*it).second << "]" << endl;
}
return 0;
}
执行 g++ main.cpp && ./a.out
编译运行以上程序,输出结果如下:
Size of map m: 6
Elements in m:
[China, Shanghai]
[China, Guangzhou]
[Netherlands, Amsterdam]
[Thailand, Chiang Mai]
[United Kingdom, London]
[United States, Los Angeles]
multimap 成员函数
下面是 multimap 的所有成员函数的列表。
构造器/解析器
函数 |
说明 |
(constructor) |
构造 multimaps。 |
(destructor) |
析构函数。 |
operator = |
将 multimaps 的元素复制到另一个 multimaps。 |
迭代器
函数 |
说明 |
begin |
返回指向多重映射中第一个元素的迭代器。 |
cbegin |
返回指向多重映射中第一个元素的 const_iterator。 |
end |
返回指向末尾的迭代器。 |
cend |
返回一个指向末尾的常量迭代器。 |
rbegin |
返回指向结尾的反向迭代器。 |
rend |
返回指向起点的反向迭代器。 |
crbegin |
返回一个指向末尾的常量反向迭代器。 |
credit |
返回指向起点的常量反向迭代器。 |
容量
函数 |
说明 |
empty |
如果 multimaps 为空,则返回 true。 |
size |
返回 multimaps 中的元素数量。 |
max_size |
返回 multimaps 的最大尺寸。 |
修饰符
函数 |
说明 |
insert |
将元素插入 multimaps。 |
erase |
从多重映射中擦除元素。 |
swap |
交换 multimaps 的内容。 |
clear |
删除 multimaps 的所有元素。 |
emplace |
构造新元素并将其插入 multimaps。 |
emplace_hint |
通过提示构造新元素并将其插入 multimaps。 |
观察者
函数 |
说明 |
key_comp |
返回键比较对象的副本。 |
value_comp |
返回值比较对象的副本。 |
操作方式
函数 |
说明 |
find |
搜索具有给定键的元素。 |
count |
获取与给定键匹配的元素数。 |
lower_bound |
将迭代器返回到下限。 |
upper_bound |
将迭代器返回上限。 |
equal_range |
返回与给定键匹配的元素的参数。 |
get_allocator |
返回用于构造 multimaps 的分配器对象。 |
非重载函数
函数 |
说明 |
operator== |
检查两个 multimaps 是否相等。 |
operator!= |
检查两个 multimaps 是否相等。 |
operator< |
检查第一个 multimaps 是否小于其他 multimaps。 |
operator<= |
检查第一个 multimaps 是否小于或等于其他。 |
operator> |
检查第一个 multimaps 是否大于其他 multimaps。 |
operator>= |
检查第一个 multimaps 是否大于其他。 |
swap() |
交换两个 multimaps 的元素。 |