1.基本概念
简介:
map 中所有元素都是 pairpair 中第一个元素为 key (键值),起到索引作用,第二个元素为 value (实值)所有元素都会根据元素的键值自动排序
本质:
map/multimap 属于 关联式容器 ,底层结构是用二叉树实现。
优点:
可以根据 key 值快速找到 value 值map 和 multimap 区别 :map 不允许容器中有重复 key 值元素multimap 允许容器中有重复 key 值元素
2.构造和赋值
map<T1, T2> mp; //map
默认构造函数
:
map<int,int> m1;
map(const map &mp)
; //拷贝构造函数
map<int,int> m2(m1);
map& operator=(const map &mp)
; //重载等号操作符
m3=m2;
3.大小和交换
size()
; //返回容器中元素的数目
m1.size();
empty(); //
判断容器是否为空
m1.empty(); //1为空,0为非空
swap(st); //
交换两个集合容器
m1.swap(m2);
4.插入和删除
insert(elem)
; //在容器中插入元素。
1.m.insert(pair<int,int>(1,10));2. m . insert ( make_pair ( 2 , 20 ));3. m . insert ( map < int , int > :: value_type ( 3 , 30 ));4. m [ 4 ] = 40 ;( 不推荐使用 )
clear(); //
清除所有元素
m.clear();
erase(pos)
; //删除
pos
迭代器所指的元素,返回下一个元素的迭代器。
m . erase ( 3 );
erase(beg, end); //
删除区间
[beg,end)
的所有元素 ,返回下一个元素的迭代器。
m . erase ( m . begin (), m . end ());
erase(key); //删除容器中值为key的元素。
m . erase ( 3 );
5.查找和统计
find(key)
; //查找
key
是否存在
,
若存在,返回该键的元素的迭代器;若不存在,返回
set.end();
map < int , int > :: iterator pos = m . find ( 3 );pos=m . end ();
count(key)
; //统计
key
的元素个数
int num = m . count ( 3 );
6.容器排序
仿函数:
class MyCompare {
public:
bool operator()(int v1, int v2) {
return v1 > v2;
}
};
主函数中创建:
map<int, int, MyCompare> m;