map容器
map中所有元素都是pair
pair中第一个元素为key键值起到所以作用,第二个为value(实值)
所有元素都会根据元素的键值自动排序
本质:
map和multimap属于关联式容器,底层结构用二插树实现的,
优点:可以根据key值快速找到value值
map:不可以重复key值元素
multimap:允许重复key值元素
map构造和赋值
对map容器进行构造和赋值纯操作
构造:map<T1,T2>mp;
map(const map &mp);
赋值:map& operator=(const map &mp);
map实例
void printMap(map<int,int>&m){
for(map<int,int>::iterator it=m.begin(); it != m.end(); it++){
cout<<"key="<<(*it).first<<"value="<<it->second<<endl;
}
cout<<endl;
}
void test01(){
map<int,int>m;
m.insert(pair<int,int>(1,10));
map<int,int>m2(m);
map<int,int>m3;
m3=m2;
printMap(m3);
}
map大小和交换
统计map容器大小以及交换map容器
函数原型:
size();
swap();
map<int,int>m;
m.insert(pair<int,int>(1,10));
m.insert(pair<int,int>(2,20));
if(m.empty()){
cout<<"m为空"<<endl;
}else{
cout<<"m不为空"<<endl;
cout<<"m的大小为:"<<m.size()<<endl;
}
map<int,int>m;
insert(elem);
clear();
erase(pos);
erase(beg,end);
erase(key);
map<int,int>m;
m.insert(pair<int,int>(1,10);
m.insert(make_pair(2,20));
m.insert(map<int,int>::value_type(3,30));
m[4]=40;
m.erase(30);
m.erase(m.begin(),m.end());
map查找和统计
对map容器进行查找数据以及统计数据
find(key);
count(key);
map<int,int>m;
m.insert(pair<int,int>(1,10));
m.insert(pair<int,int>(2,20);
m.insert(pair<int,int>(3,30));
map<int,int>::iterator pos=m.find(3);
if(pos != m.end()){
cout<<"查到了元素key="<<(*pos).first<<"value="<<pos->second<<endl;
}else{
cout<<"未找到元素"<<endl;
}
int num=m.count(3);
cout<<"num="<<num<<endl;
map排序
map容器默认排序规则为 按照key值进行从小到大排序,掌握如何
#include<iostream>
map<int,int>m;
m.insert(make_pair(1,10));
m.insert(make_pair(2,20));
m.insert(make_pair(3,30));
for(map<int,int>::ierator it = m.begin(); it != m.end(); it++){
cout<<"key="<<it->first<<"value="<<it->second<<endl;
}
class MyCompare{
public:
bool operator()(int v1, int v2){
return v1>v2;
}
};