STL教程(八)——multimap

如需转载,请注明出处。

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

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

23Nikita
28Robin
25Deep
25Aman

 Multimap Employee拥有重复的键(年龄)。

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

1.构造函数/析构函数

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


2.迭代器

begin返回指向multimap中第一个元素的迭代器
cbegin返回指向multimap中第一个元素的常量迭代器。
end返回指向过去的迭代器。
cend返回指向过去的常量迭代器。
rbegin返回指向结尾的反向迭代器。
rend返回指向开头的反向迭代器。
crbegin返回指向结尾的常量反向迭代器。
crend返回指向开头的常量反向迭代器。


3.容量

empty如果multimap为空,则返回true。
size返回multimap中元素的数量。
max_size返回multimap的最大尺寸。

4.修饰器

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


5.观察员

key_comp返回密钥比较对象的副本。
value_comp返回值比较对象的副本。


6.操作

find使用给定键搜索元素。
count获取与给定键匹配的元素数。
lower_bound返回下限的迭代器。
upper_bound返回上限的迭代器。
equal_range()返回与给定键匹配的元素范围。


7.分配器

 

get_allocator返回用于构造多图的分配器对象。


8.非成员重载函数

operator ==检查两个multimaps是否相等。
operator!=检查两个multimaps是否相等。
operator <检查第一个multimap是否小于other。
operator <=检查第一个multimap是否小于或等于other。
operator>检查第一个multimap是否大于other。
operator> =检查第一个multimap是否大于等于other。
swap()交换两个multimaps的元素。








 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值