C++ multimap
Multimaps 是C++ STL(标准模板库)的一部分。Multimaps是关联容器,类似于map,存储有序的键值对,但与只存储唯一键的map不同, multimap可以有重复的键 。默认情况下,它使用<运算符来比较键。
例如 :一个员工的multimap,其中员工年龄是键,姓名是值,可以表示为:
Keys | Values |
---|---|
23 | Nikita |
28 | Robin |
25 | Deep |
25 | Aman |
Multimap员工拥有重复的键年龄。
语法
template < class Key, // multimap::key_type
class T, // multimap::mapped_type
class Compare = less, // multimap::key_compare
class Alloc = allocator > // multimap::allocator_type
> class multimap;
参数
key :要存储在multimap中的键数据类型。
type :要存储在multimap中的值的数据类型。
compare :一个比较类,接受两个相同类型的bool参数并返回一个值。此参数是可选的,默认值是二元谓词less<“key”>。
alloc :分配器对象的类型。此参数是可选的,默认值是allocator 。
创建multimap
可以使用以下语句轻松创建multimap:
typedef pair value_type;
上面的表单将用于创建一个键类型为 Key_type ,值类型为 value_type 的多重映射。一个重要的事情是,多重映射的键和相应的值总是以一对形式插入的,你不能只插入键或者仅插入一个值。
示例
#include
#include
#include
using namespace std;
int main()
{
multimap m = {
{"India","New Delhi"},
{"India", "Hyderabad"},
{"United Kingdom", "London"},
{"United States", "Washington D.C"}
};
cout << "Size of map m: " << m.size() <::iterator it = m.begin(); it != m.end(); ++it)
{
cout << " [" << (*it).first << ", " << (*it).second << "]" << endl;
}
return 0;
}
输出:
Size of map m: 4
Elements in m:
[India, New Delhi]
[India, Hyderabad]
[United Kingdom, London]
[United States, Washington D.C]
成员函数
以下是multimap的所有成员函数列表:
构造函数/析构函数
函数 | 描述 |
---|---|
构造函数 | 构造多重映射 |
析构函数 | 多重映射析构函数 |
赋值运算符 | 将多重映射的元素复制到另一个多重映射中。 |
迭代器
功能 | 描述 |
---|---|
begin | 返回指向multimap中第一个元素的迭代器。 |
cbegin | 返回指向multimap中第一个元素的常量迭代器。 |
end | 返回指向past-end的迭代器。 |
cend | 返回指向past-end的常量迭代器。 |
rbegin | 返回指向末尾的反向迭代器。 |
rend | 返回指向开头的反向迭代器。 |
crbegin | 返回指向末尾的常量反向迭代器。 |
crend | 返回指向开头的常量反向迭代器。 |
容量
功能 | 描述 |
---|---|
empty | 如果multimap为空,则返回true。 |
size | 返回multimap中元素的数量。 |
max_size | 返回multimap的最大大小。 |
修饰符
功能 | 描述 |
---|---|
插入 | 在multimap中插入元素。 |
删除 | 从multimap中删除元素。 |
交换 | 交换multimap的内容。 |
清空 | 删除multimap的所有元素。 |
构造并插入 | 构造并将新元素插入multimap。 |
插入位置构造 | 构造并将新元素按照提示插入multimap。 |
观察者
功能 | 描述 |
---|---|
key_comp | 返回键比较对象的副本。 |
value_comp | 返回值比较对象的副本。 |
操作
功能 | 描述 |
---|---|
find | 查找具有给定键的元素。 |
count | 获取与给定键匹配的元素数量。 |
lower_bound | 返回下限的迭代器。 |
upper_bound | 返回上限的迭代器。 |
equal_range() | 返回与给定键匹配的元素范围。 |
分配器
函数 | 描述 |
---|---|
get_allocator | 返回一个用于构造multimap的分配器对象。 |
非成员重载函数
函数 | 描述 |
---|---|
operator== |
检查两个multimap是否相等。 |
operator!= |
检查两个multimap是否不相等。 |
operator< |
检查第一个multimap是否小于其他。 |
operator<= |
检查第一个multimap是否小于等于其他。 |
operator> |
检查第一个multimap是否大于其他。 |
operator>= |
检查第一个multimap是否大于等于其他。 |
swap() |
交换两个multimap的元素。 |