C++的multimap函数

multimap是C++的STL(标准模板库)的一部分。multimap是关联容器,类似于map,存储排序的键值对,但与map只存储唯一键不同,multimap可以有重复键。默认情况下,它使用<运算符来比较键。

例如:一个员工的multimap,其中员工年龄是键,姓名是值,可以表示为:

23Nikita
28Robin
25Deep
25Aman

Multimap中有重复键age。

语法

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:要存储在multimap中的键的数据类型。

T:要存储在multimap中的值的数据类型。

compare:一个比较类,接受两个相同类型的参数并返回一个值。此参数是可选的,默认值为二元谓词less<"key">。

alloc:分配器对象的类型。此参数是可选的,默认值为allocator。

创建multimap

可以使用以下语句轻松创建multimap:

typedef pair<const Key, T> value_type; 

上述形式用于创建具有Key_type类型键和value_type类型值的multimap。一个重要的事情是,multimap的键和对应的值总是作为一对插入的,不能只插入键或值。

示例

#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的所有成员函数列表:

构造函数/析构函数

函数描述
构造函数构造multimap
析构函数multimap析构函数
operator=将multimap的元素复制到另一个multimap中。

迭代器

函数描述
begin返回指向multimap中第一个元素的迭代器。
cbegin返回指向multimap中第一个元素的常量迭代器。
end返回指向past-the-end的迭代器。
cend返回指向past-the-end的常量迭代器。
rbegin返回指向末尾的反向迭代器。
rend返回指向开头的反向迭代器。
crbegin返回指向末尾的常量反向迭代器。
crend返回指向开头的常量反向迭代器。

容量

函数描述
empty如果multimap为空,则返回true。
size返回multimap中的元素数量。
max_size返回multimap的最大大小。

修改器

函数描述
insert在multimap中插入元素。
erase从multimap中删除元素。
swap交换multimap的内容。
clear删除multimap的所有元素。
emplace构造并插入新元素到multimap中。
emplace_hint通过提示构造并插入新元素到multimap中。

观察者

函数描述
key_comp返回键比较对象的副本。
value_comp返回值比较对象的副本。

操作

函数描述
find搜索具有给定键的元素。
count获取与给定键匹配的元素数量。
lower_bound返回指向下界的迭代器。
upper_bound返回指向上界的迭代器。
equal_range()返回与给定键匹配的元素范围。

分配器

函数描述
get_allocator返回用于构造multimap的分配器对象。

非成员重载函数

函数描述
operator==检查两个multimap是否相等。
operator!=检查两个multimap是否不相等。
operator<检查第一个multimap是否小于另一个multimap。
operator<=检查第一个multimap是否小于或等于另一个multimap。
operator>检查第一个multimap是否大于另一个multimap。
operator>=检查第一个multimap是否大于或等于另一个multimap。
swap()交换两个multimap的元素。

标签: C++语言, C++语言教程, C++语言技术, C++语言学习, C++语言学习教程, C++语言开发, C++语言入门教程, C++语言高级教程, C++语言面试题, C++语言笔试题, C++语言编程思想