C++ STL 多重映射
多重映射(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 的所有成员函数的列表。