C++之map容器
![在这里插入图片描述](https://img-blog.csdnimg.cn/071a79c6b4ff4e53bcf921c03b18a365.png)
map构造和赋值
![在这里插入图片描述](https://img-blog.csdnimg.cn/a286831d746f4d3b9c29f12db43de29d.png)
#include<iostream>
#include<string>
using namespace std;
#include<map>void printMap(map<int,int>&m)
{for (map<int,int>::iterator it = m.begin();it != m.end();it++){//cout <<"key is: "<< (*it).first << " value is "<<(*it).second<<endl;cout << "key is: " << it->first << " value is " << it->second << endl;}cout << endl;
}void test()
{//创建map容器map<int, int>m;m.insert(pair<int, int>(1, 10));m.insert(pair<int, int>(2, 50));m.insert(pair<int, int>(3, 30));m.insert(pair<int, int>(4, 20));m.insert(pair<int, int>(5, 40));printMap(m);//拷贝构造map<int, int>m2(m);printMap(m2);//赋值map<int, int>m3;m3 = m;printMap(m3);
}int main()
{test();system("pause");return 0;
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/9da2b79f04d441c792cf65cde350d42a.png)
map大小和交换
![在这里插入图片描述](https://img-blog.csdnimg.cn/d69440aa666544c2ba5c96c37243cdca.png)
#include<iostream>
#include<string>
using namespace std;
#include<map>void printMap(map<int,int>&m)
{for (map<int,int>::iterator it = m.begin();it != m.end();it++){//cout <<"key is: "<< (*it).first << " value is "<<(*it).second<<endl;cout << "key is: " << it->first << " value is " << it->second << endl;}cout << endl;
}void test()
{//创建map容器map<int, int>m;m.insert(pair<int, int>(1, 10));m.insert(pair<int, int>(2, 50));m.insert(pair<int, int>(3, 30));m.insert(pair<int, int>(4, 20));m.insert(pair<int, int>(5, 40));printMap(m);if (m.empty()){cout << "m is empty" << endl;}else{cout << "m is not empty" << endl;cout << "m's size is" << m.size() << endl;}map<int, int>m2;m2.insert(pair<int, int>(1, 100));m2.insert(pair<int, int>(2, 500));m2.insert(pair<int, int>(3, 300));m2.insert(pair<int, int>(4, 200));m2.insert(pair<int, int>(5, 400));cout << "before swap" << endl;printMap(m);printMap(m2);m2.swap(m);cout << "after swap" << endl;printMap(m);printMap(m2);
}int main()
{test();system("pause");return 0;
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/153f08d2b703487598793dd6e821d740.png)
map插入和删除
![在这里插入图片描述](https://img-blog.csdnimg.cn/86aa76ea54744a84876fbab97ef5afdb.png)
#include<iostream>
#include<string>
using namespace std;
#include<map>void printMap(map<int,int>&m)
{for (map<int,int>::iterator it = m.begin();it != m.end();it++){//cout <<"key is: "<< (*it).first << " value is "<<(*it).second<<endl;cout << "key is: " << it->first << " value is " << it->second << endl;}cout << endl;
}void test()
{//创建map容器map<int, int>m;//插入//第一种m.insert(pair<int, int>(1, 10));//第二种m.insert(make_pair(2, 50));//第三种m.insert(map<int, int>::value_type(3, 30));//第四种 不建议使用 用途:使用Key找到valuem[4] = 20;printMap(m);//删除m.erase(m.begin());printMap(m);m.erase(2);//按照key值删除printMap(m);//清空//m.erase(m.begin(),m.end());m.clear();printMap(m);
}int main()
{test();system("pause");return 0;
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/b6b56c54e9a44d43b671fc2d579430d9.png)
map查找和统计
![在这里插入图片描述](https://img-blog.csdnimg.cn/fbdd46de722b484ea2d440ad1debcc5d.png)
#include<iostream>
#include<string>
using namespace std;
#include<map>void printMap(map<int,int>&m)
{for (map<int,int>::iterator it = m.begin();it != m.end();it++){//cout <<"key is: "<< (*it).first << " value is "<<(*it).second<<endl;cout << "key is: " << it->first << " value is " << it->second << endl;}cout << endl;
}void test()
{//创建map容器map<int, int>m;//插入m.insert(pair<int, int>(1, 10));m.insert(pair<int, int>(2, 50));m.insert(pair<int, int>(3, 30));m.insert(pair<int, int>(4, 20));printMap(m);map<int,int>::iterator pos= m.find(2);if (pos != m.end()){cout << "找到了:key is " << pos->first << " value is " << (*pos).second << endl;}else{cout << "没有找到" << endl;}
//map不允许插入重复key 元素 ,count统计而言 结果要么是0 要么是1
//multimap的count统计可能大于1//统计int num = m.count(3);//按照key查找cout << "num is " << num << endl;
}int main()
{test();system("pause");return 0;
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/8c8cb179048b4abc8ceafc19154fb4c6.png)
map容器排序
![在这里插入图片描述](https://img-blog.csdnimg.cn/38ee7bdb8b2442ff846bde8cdaf36aed.png)
#include<iostream>
#include<string>
using namespace std;
#include<map>class MyCompare
{
public:bool operator()(int v1, int v2){return v1 > v2;}
};void test()
{//创建map容器map<int, int, MyCompare>m;//插入m.insert(make_pair<int, int>(1, 10));m.insert(make_pair<int, int>(2, 50));m.insert(make_pair<int, int>(3, 30));m.insert(make_pair<int, int>(4, 20));for (map<int, int, MyCompare>::iterator it = m.begin();it != m.end();it++){//cout <<"key is: "<< (*it).first << " value is "<<(*it).second<<endl;cout << "key is: " << it->first << " value is " << it->second << endl;}cout << endl;}int main()
{test();system("pause");return 0;
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/9cce1dca1ab347d09e2a1dad77222a7b.png)