- map容器中都是键值对。
- 可以快速从大量数据中找到数据。如:身份证和人名
- 所有的元素都按照key值自动排序。
底层按照二叉树实现的。map和multimap容器的区别:
- map不允许重复的数值出现,multimap允许重复的key出现。
map构造和赋值:
构造:
mapmp; //默认构造函数 map(const map &mp);//拷贝构造
赋值:
map& operator=(const map &mp); //重载等号运算符
按照key排序。
void printMap(m){
for(map::iterator it = m.begin();it!=m.end();it++){
cout<<"key = "<first<<"value = "it->second<
//创建map容器
map m;
m.insert(pair(1,10));
m.insert(pair(2,20));
m.insert(pair(3,30));
m.insert(pair(4,40));
printMap(m);
}
拷贝构造
mapm2(m); printMap(m2);
赋值
mapm3; m3 = m2;
总结:map中所有的元素都是成对出现的,插入的时候要是用对组。
map大小和交换功能描述;
- 统计map容器的大小以及交换map容器。
函数原型: - size();
- empty();
- swap(st);
void test01()
{
//创建map容器
map m;
m.insert(pair(1,10));
m.insert(pair(2,20));
m.insert(pair(3,30));
m.insert(pair(4,40));
printMap(m);
if(m.empty())
cout<<"m为空"<
交换
void test01()
{
//创建map容器m1
map m1;
m1.insert(pair(1,10));
m1.insert(pair(2,20));
m1.insert(pair(3,30));
//创建map容器m2
map m2;
m2.insert(pair(1,10));
m2.insert(pair(2,20));
m2.insert(pair(3,30));
cout<<"交换前"<
总结:
- size统计大小
- empty判断为空
- swap交换容器
map容器的插入和删除
功能描述:
- map容器进行插入和删除数据
函数原型:
- insert()//容器中插入数据
- clear()//情况所有的元素
- erase(pos);//删除pos迭代器所指向的元素,返回下一个元素的迭代器
- erase(beg,end);//删除区间[beg,end]的所有元素,返回下一个元素的迭代器
- erase(key);//删除容器中值为key 的元素
插入:
void test1(){
mapm;
1、
m.insert(pair(1,10));
2、
m.insert(make_pair(2,20));
3、
m.insert(map::value_type(3,30));
4、
m[4] = 40;
}
删除操作:
m.erase(m.begin());
printMap(m);
m.erase(3);//按照key删除
printMap(m);
//清空
m.erase(n.begin(),m.end());
m.clear();
printMap(m);
map查找和统计
功能描述:
- 对map容器进行查找数据以及统计数据
- 函数原型
- find(key);查找key是否存在,存在返回这个元素的迭代器,否则返回set.end();
- count(key);统计key个数
map容器排序
map容器默认排序为key数值从小到大排序,掌握仿函数改变排序规则。
class MyCompare{
public:
bool operator()(int v1,int v2){
//降序
return v1>v2;
}
}



