本文概述
多图是C ++ STL(标准模板库)的一部分。多重地图是类似的容器, 例如地图, 用于存储已排序的键/值对, 但是与仅存储唯一键的地图不同, 多重地图可以具有重复的键。默认情况下, 它使用<运算符比较键。
例如:一个雇员多图, 其中雇员年龄是关键, 姓名是值, 可以表示为:
按键 | 价值观 |
---|---|
23 | Nikita |
28 | Robin |
25 | Deep |
25 | Aman |
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;
参数
key:要存储在多图中的密钥数据类型。
type:要存储在多图中的值的数据类型。
compare:一个比较类, 该类接受两个bool类型相同的参数, 并返回一个值。此参数是可选的, 二进制谓词less <“ key”>是默认值。
alloc:分配器对象的类型。此参数是可选的, 默认值为allocator。
创建多图
使用以下语句可以轻松创建多图:
typedef pair<const Key, T> value_type;
上面的表格将用于创建键类型为Key_type和值类型为value_type的多图。重要的一点是, 多图的键和相应的值始终成对插入, 不能在多图中仅插入键或仅插入值。
例
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main()
{
multimap<string, string> m = {
{"India", "New Delhi"}, {"India", "Hyderabad"}, {"United Kingdom", "London"}, {"United States", "Washington D.C"}
};
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;
}
输出:
Size of map m: 4
Elements in m:
[India, New Delhi]
[India, Hyderabad]
[United Kingdom, London]
[United States, Washington D.C]
会员职能
下面是multimap的所有成员函数的列表:
建造者/毁灭者
功能 | 描述 |
---|---|
constructor | Construct multimap |
destructor | 多图析构函数 |
operator= | 将多图的元素复制到另一个多图。 |
迭代器
功能 | 描述 |
---|---|
begin | 返回指向多重映射中第一个元素的迭代器。 |
cbegin | 返回指向多重映射中第一个元素的const_iterator。 |
end | 返回指向末尾的迭代器。 |
cend | 返回指向末尾的常量迭代器。 |
rbegin | 返回指向末尾的反向迭代器。 |
rend | 返回指向起点的反向迭代器。 |
crbegin | 返回指向末尾的常量反向迭代器。 |
crend | 返回指向起点的常量反向迭代器。 |
容量
功能 | 描述 |
---|---|
empty | 如果multimap为空, 则返回true。 |
size | 返回多图中元素的数量。 |
max_size | 返回多图的最大尺寸。 |
修饰符
功能 | 描述 |
---|---|
insert | 在多图中插入元素。 |
erase | 从多图上擦除元素。 |
swap | 交换多图的内容。 |
clear | 删除多图的所有元素。 |
emplace | 构造新元素并将其插入到multimap中。 |
emplace_hint | 通过提示构造新元素并将其插入到multimap中。 |
观察者
功能 | 描述 |
---|---|
key_comp | 返回键比较对象的副本。 |
value_comp | 返回值比较对象的副本。 |
运作方式
功能 | 描述 |
---|---|
find | 搜索具有给定键的元素。 |
count | 获取与给定键匹配的元素数。 |
lower_bound | 返回迭代器的下限。 |
upper_bound | 返回一个迭代器到上限。 |
equal_range() | 返回与给定键匹配的元素范围。 |
分配者
功能 | 描述 |
---|---|
get_allocator | 返回用于构造多图的分配器对象。 |
非成员重载函数
功能 | 描述 |
---|---|
operator== | 检查两个多图是否相等。 |
operator!= | 检查两个多图是否相等。 |
operator< | 检查第一个多图是否小于其他多图。 |
operator<= | 检查第一个多图是否小于或等于其他。 |
operator> | 检查第一个多图是否大于其他多图。 |
operator>= | 检查第一个多图是否大于其他。 |
swap() | 交换两个多图的元素。 |
评论前必须登录!
注册