map容器的特性:
1.所有元素都会根据元素的键值自动排序。map的所有元素都是pair,同时拥有实值和键值,map不允许两个元素有相同的键值。
2.不能通过map的迭代器改变键值。因为键值关系搞map元素的排列规则,任意改变map键值,将会严重破坏map组织,修改元素的实值是可以的。
3.在对容器元素进行新增或删除操作时,操作之前的所有迭代器,在操作完成后,依然有效,被删除的那个元素的迭代器无效。
4.multimap和map的操作相同,唯一区别是multimap的键值可重复。
5.map和multimap都是以红黑树为底层实现机制。
map/multimap常用API:
1.构造函数
map<T1,T2> m默认构造
map(const map& m)拷贝构造
2.map赋值操作
map& operator=(const map& m)重载赋值运算符
swap(m)交换两个集合容器
3.map大小操作
size()返回元素个数
empty()判断容器是否为空
4.map插入数据元素操作
map<int ,string> m
第一种:通过pair方式插入对象
m.insert(pair<int ,string>(1,"liming")
第二种:通过pair方式插入对象
m.insert(make_pair(2,"liming")
第三种:通过value_type方式插入对象
m.insert(map<int,string>::value_type(3,"liming"))
第四种:通过数组方式插入:
m[4]="liming"
5.map删除操作
clear()删除所有元素
erase(pos)删除pos迭代器所指向的元素,返回下一个元素的迭代器
erase(beg,end)删除[beg,end)的所有元素
erase(key)删除容器中键值为key的对组
6.map查找操作
find(key)查找键值key是否存在,若存在,返回该键值的元素迭代器,若不存在,返回map.end()
count(key)查找键值为key的对组个数
lower_bound(key)返回第一个键值>=key元素的迭代器
upper_bound(key)返回第一个键值>key的元素的迭代器
equal_range(key) 返回第一个键值与key相等的上下限的两个迭代器