map和multimap的注意点
1. Map和Multimap是将(key, value)以pair的方式当做元素进行管理
2. multimap允许重复value,map不允许有重复value
3. 根据key的排序准则自动将元素排序
map和multimap的基本函数
函数 | 功能 |
---|---|
clear() | 删除所有元素 |
count() | 返回一个元素出现的次数 |
empty() | 如果multimap为空则返回真 |
end() | 返回一个指向multimap末尾的迭代器 |
equal_range() | 返回指向元素的key为指定值的迭代器对 |
erase() | 删除元素 |
find() | 查找元素 |
get_allocator() | 返回multimap的配置器 |
insert() | 插入元素 |
key_comp() | 返回比较key的函数 |
max_size() | 返回可以容纳的最大元素个数 |
rbegin() | 返回一个指向mulitmap尾部的逆向迭代器 |
rend() | 返回一个指向multimap头部的逆向迭代器 |
size() | 返回multimap中元素的个数 |
swap() | 交换两个multimaps |
lower_bound() | 返回指向≥键值的元素的第一个位置 |
upper_bound() | 返回指向>键值的定元素的第一个位置 |
value_comp() | 返回比较元素value的函数 |
insert()的用法
1.运用value_type
为了避免隐式转换,可以利用容器本身提供的value_type类型传递正确的型别,例如:
typedef map<string, int> StrIntMap;
StrIntMap Maps;
//方式一
Maps.insert(StrIntMap::value_type("hello", 21));
2.运用pair
//方式二
Maps.insert(pair<string, int>("Test", 22)); //发生隐身转换
Maps.insert(pair<const string, int>("Hua", 23));//没有隐身转换
3.运用make_pair()
//方式三
Maps.insert(make_pair("Wei", 24));
4.运用下标操作符
//方式四
Maps["Jin"] = 27;//仅支持map multimap不支持