1.map基本概念
2.map构造和赋值
#include <iostream>
using namespace std;//map容器 构造和赋值
#include<map>//遍历输出map容器
void printMap(const map<int, int>& m)
{for (map<int, int>::const_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;//按照key值自动排序m.insert(pair<int, int>(1, 10));m.insert(pair<int, int>(3, 30));m.insert(pair<int, int>(2, 20));m.insert(pair<int, int>(4, 40));printMap(m);//拷贝构造map<int, int>m2(m);printMap(m2);//赋值map<int, int>m3;m3 = m2;printMap(m3);
}int main()
{test01();//cout << "-------------" << endl << endl;//test02();//**************************************system("pause");return 0;
}
3.map大小和交换
#include <iostream>
using namespace std;//map容器 大小和交换
#include<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));m.insert(pair<int, int>(3, 30));m.insert(pair<int, int>(2, 20));if (m.empty()){cout << "m为空!" << endl;}else{cout << "size of m : " << m.size() << endl;}
}//交换
void test02()
{map<int, int>m;m.insert(pair<int, int>(1, 10));m.insert(pair<int, int>(3, 30));m.insert(pair<int, int>(2, 20));map<int, int>m2;m2.insert(pair<int, int>(4, 100));m2.insert(pair<int, int>(6, 300));m2.insert(pair<int, int>(5, 200));cout << "交换前:" << endl;printMap(m);printMap(m2);//m与m2交换m.swap(m2);cout << "交换后:" << endl;printMap(m);printMap(m2);
}int main()
{test01();cout << "-------------" << endl << endl;test02();//**************************************system("pause");return 0;
}
4.map插入和删除
#include <iostream>
using namespace std;//map容器 插入和删除
#include<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容器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;//[]不建议插入, []其用途 可以利用可以访问到value//cout << m[5] <<endl; //输出了" key = 5 value = 0 "printMap(m);//删除m.erase(m.begin());printMap(m);m.erase(3); //按照key删除printMap(m);//清空m.erase(m.begin(), m.end());m.clear();printMap(m);
}int main()
{test01();//cout << "-------------" << endl << endl;//test02();//**************************************system("pause");return 0;
}
5.map查找和统计
#include <iostream>
using namespace std;//map容器 查找和统计
#include<map>
void test01()
{//查找map<int, int>m;m.insert(make_pair(1, 10));m.insert(make_pair(3, 30));m.insert(make_pair(2, 20));m.insert(make_pair(2, 40)); // 不能插入重复元素(以key为标准)map<int, int>::iterator pos = m.find(3);if (pos != m.end()){cout << "找到了该元素 key = " << (*pos).first << " value = " << pos->second << endl;}else{cout << "no find this element" << endl;}//统计//map不允许插入重复元素, count统计而言 结果只能是0或1//multimap的count统计可能大于1int num = m.count(2);cout << "num = " << num << endl;
}int main()
{test01();//cout << "-------------" << endl << endl;//test02();//**************************************system("pause");return 0;
}
6.map容器排序
#include <iostream>
using namespace std;//map容器 排序
#include<map>class MyCompare
{
public:bool operator()(int v1, int v2) const{return v1 > v2; // 降序}
};void test01()
{//默认从小到大排序//利用仿函数实现从小到大排序map<int, int, MyCompare> m;m.insert(make_pair(1, 10));m.insert(make_pair(3, 30));m.insert(make_pair(2, 20));for (map<int, int, MyCompare>::iterator it = m.begin(); it != m.end(); it++){cout << "key = " << it->first << " value = " << it->second << endl;}
}int main()
{test01();//cout << "-------------" << endl << endl;//test02();//**************************************system("pause");return 0;
}