底层按照二叉树实现的。
key出现。map构造和赋值:
构造:
map<T1,T2> mp; //默认构造函数
map(const map &mp);//拷贝构造
赋值:
map& operator=(const map &mp); //重载等号运算符
按照key排序。
void printMap(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容器
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));
m.insert(pair<int,int>(4,40));
printMap(m);
}
拷贝构造
map<int,int>m2(m);
printMap(m2);
赋值
map<int,int>m3;
m3 = m2;
总结:map中所有的元素都是成对出现的,插入的时候要是用对组。
功能描述;
void test01()
{
//创建map容器
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));
m.insert(pair<int,int>(4,40));
printMap(m);
if(m.empty())
cout<<"m为空"<<endl;
else
cout<<"m大小为:"<<m.size()<<endl;
}
交换
void test01()
{
//创建map容器m1
map<int,int> m1;
m1.insert(pair<int,int>(1,10));
m1.insert(pair<int,int>(2,20));
m1.insert(pair<int,int>(3,30));
//创建map容器m2
map<int,int> m2;
m2.insert(pair<int,int>(1,10));
m2.insert(pair<int,int>(2,20));
m2.insert(pair<int,int>(3,30));
cout<<"交换前"<<endl;
printMap(m1);
printMap(m2);
m1.swap(m2);
cout<<"交换前"<<endl;
printMap(m1);
printMap(m2);
}
总结:
功能描述:

插入:
void test1(){
map<int,int>m;
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;
}

删除操作:
m.erase(m.begin());
printMap(m);
m.erase(3);//按照key删除
printMap(m);
//清空
m.erase(n.begin(),m.end());
m.clear();
printMap(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>::interator pos = m.find(3);
if(pos!=m.end){
cout<<"查到了元素key = "<<pos->first<<"value = "<<pos->end<<endl;
}else{
cout <<"未查到该元素"<<endl;
}
统计
map不允许插入重复的key元素,count统计来说,要么是0,要么是1.
multimap的count统计key大于1
int num = m.count(3); //统计key为3的数目
cout<<"num = "<<num<<endl;
总结:
map容器默认排序为key数值从小到大排序,掌握仿函数改变排序规则。
class MyCompare{
public:
bool operator()(int v1,int v2){
//降序
return v1>v2;
}
}
void test01(){
//默认从小到大排序
//利用仿函数实现从大到小排序
map<int,int,MyCompaer> m;
m.insert(pair<int,int>(1,10));
m.insert(pair<int,int>(2,20));
m.insert(pair<int,int>(3,30));
m.insert(pair<int,int>(4,40));
m.insert(pair<int,int>(5,50));
for(map<int int,MyCompare>::iterator it = m.begin();it!=m.end();it++){
cout<<"key = "<<it->first<<"value = "<<it->second<<endl;
}
}