map基本概念
map中所有元素都是pair
pair中第一个元素为key(键值),起索引作用,第二个元素为value(实值)
所有元素都会根据元素的键值自动排序
本质:
map/multimap属于关联式容器,底层结构是用二叉树实现
优点
可以根据Key值快速找到value值
map/multimap区别:
map中不允许容器中有重复key值元素
multimap允许容器中有重复key值元素
map构造和赋值
构造
map mp;//默认构造
map(cons map &map);//拷贝构造
赋值
map& operator=(const map &map);//重载等号操作符
map大小和交换
size();//返回容器中元素的数目
empty();//判断容器是否为空
swap(st);//交换两个集合容器
map插入和删除(不允许插入重复key)
insert(elem);//在容器中插入元素
map<int,int> m;m.insert(pairint>(m.insert(make_pair(2,20));m.insert(map<int,int)::vlue_type(3,30));m[4]=40;//不建议插入,可以查询
clear();//清除所有元素
erase(pos);//删除pos迭代器所指的元素,返回下一个元素的迭代器
erase(beg,end);//删除区间迭代器[beg,end)的所有元素,返回下一个元素的迭代器
erase(key);//删除容器中键值为key的元素
map查找和统计
find(key);//查找key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回end();
count(key);//统计key元素个数(要么是0要么是1)multimap可以重复插
map容器排序
map容器默认排序规则为按照key值,从小到大排序
利用仿函数,可以改变排序规则