stl中的map是自动按照关键字索引升序排列的,还是列举了基本的增删查改函数:
#include <map> //头文件
map<int,string>mp //声明
map<int, string>mp(mp2) //把相同类型的mp2全部元素拷贝构造到mp
map<int, string, comp>mp //带有自定义的map内元素比较函数comp做为参数的声明
map<int, string>::iterator it //声明迭代器
mp.insert()
1) mp.insert( pair<int, string> (0, "zero_value")) //用pair<keytype, valuetype>()插入
2) mp.insert( map<int, string>::value_type(1, "first_value")) //用map<keytype, valuetype>::value_type()插入
mp[2]= "second_value" //关键字索引方式插入,如原来没有该关键字则添加;若有则覆盖原关键字对应的值
mp.erase()
1) it = mp.find(0) mp.erase(it) //迭代器方式删除
2) int zero_or_one = mp.erase(0) //关键字方式删除,成功返回1,失败返回0
3) mp.erase( mp.begin(), mp.end() ) //迭代器范围删除,这里相当于mp.clear()
mp.clear() //清空所有元素
it = mp.find(0) //用关键字查找,成功返回对应关键字的迭代器,失败返回mp.end()
it->first it->second it++ //分别访问迭代器对应的key、迭代器对应的value、迭代器加1
mp.size() //返回元素个数
mp.max_size() //返回可以容纳的最多元素个数
mp.begin() //返回指向头部的迭代器,即第一个元素的迭代器
mp.end() //返回指向尾部的迭代器,即最后一个元素后面的迭代器
map<int, string>::reverse_iterator re_it //声明逆向迭代器,加1时访问前一个元素,减1时访问后一个元素
mp.rbegin() //返回指向最后一个元素的逆向迭代器
mp.rend() //返回指向第一个元素前面的逆向迭代器
re_it.base() //返回逆向迭代器所指向元素位置的后一个位置的迭代器
mp.count(key) //返回被查找关键字的出现次数,又因为map内关键字唯一,所以找到返回1,没找到返回0
mp.empty() //空则返回true,不空返回false
mp.lower_bound(key) //返回map中键>=给定值的第一个元素的迭代器
mp.upper_bound(key) //返回map中键>给定值的第一个元素的迭代器
mp.key_comp() //返回比较两个key元素的函数
map<int, string>::key_compare mycomp=mp.key_comp()
mycomp(key1, key2) //比较两个key的位置关系,若key1元素在前,则返回true,注意map已默认按key的升序排列
同理
mp.value_comp() //返回比较map内两个pair元素的函数
map<int, string>::value_compare mycomp=mp.value_comp()
mycomp(pair_element1, pair_element2) //比较两个pair元素key的位置,若pair_element1.first在前,返回true
mp.equal_range(key) //返回与key相等的最大区间[左闭右开),即返回pair<lower_bound(), upper_bound()>的一个对象
mp.get_allocator() //返回map的allocator
mp.swap(mp2) //交换两个相同类型(大小可能不同)的map的全部元素