map简介
高性能,高效率
map构造和赋值
#include <algorithm> //算法
#include <iostream>
#include <map>
#include <string>
using namespace std;
// map容器 构造和赋值
void printMap(map<int, int>& m)
{
for (map<int, int>::iterator it = m.begin(); it != m.end(); it++) {
cout << "index:" << it->first << endl;
cout << "value:" << it->second << endl;
}
}
void test02()
{
map<int, int> m; // map容器,第一个是索引,第二个是值
m.insert(pair<int, int>(1, 10)); //插入的时候里面的元素是一个pair匿名队组
m.insert(pair<int, int>(3, 30)); //按照key值自动排序
m.insert(pair<int, int>(2, 20));
printMap(m);
//拷贝构造
map<int,int>m2(m);
//赋值
map<int,int>m3 = m2;
}
int main()
{
test02();
}
总结:map中所有的元素都是成对出现,插入数据时要使用对组pair
map大小和转换
#include <algorithm> //算法
#include <iostream>
#include <map>
#include <string>
using namespace std;
// map容器 构造和赋值
void printMap(map<int, int>& m)
{
for (map<int, int>::iterator it = m.begin(); it != m.end(); it++) {
cout << "index:" << it->first << endl;
cout << "value:" << it->second << endl;
}
}
void test02()
{
map<int, int> m; // map容器,第一个是索引,第二个是值
m.insert(pair<int, int>(1, 10)); //插入的时候里面的元素是一个pair匿名队组
m.insert(pair<int, int>(3, 30)); //按照key值自动排序
m.insert(pair<int, int>(2, 20));
printMap(m);
cout << "map容器的大小" << m.size() << endl;
map<int, int> m1;
m1.insert(pair<int, int>(1, 100));
m1.insert(pair<int, int>(2, 300));
m1.insert(pair<int, int>(3, 100));
printMap(m1);
m.swap(m1);
printMap(m1);
cout << "容器是否为空" << m1.empty() << endl;
}
int main()
{
test02();
}
map插入和删除
#include <algorithm> //算法
#include <iostream>
#include <map>
#include <string>
using namespace std;
// map容器 构造和赋值
void printMap(map<int, int>& m)
{
for (map<int, int>::iterator it = m.begin(); it != m.end(); it++) {
cout << "index:" << it->first << " ";
cout << "value:" << it->second << " ";
}
cout << endl;
}
void test02()
{
map<int, int> m; // map容器,第一个是索引,第二个是值
//插入
m.insert(pair<int, int>(1, 100)); //插入的时候里面的元素是一个pair匿名队组
m.insert(make_pair(2, 200));
// 3
m.insert(map<int, int>::value_type(3, 300)); //不建议使用,
// 4
m[4] = 400; //重载了【】方式 不建议使用,因为会覆盖原值
cout << m[5] << endl; //查找数据,因为没有5,会插入数据 5 = 0
cout << m[2] << endl; //【】利用key访问value
printMap(m);
//删除
m.erase(m.begin());
printMap(m);
m.erase(3); //删除key
printMap(m);
m.erase(0); //没有数据不删除
printMap(m);
m.erase(m.begin(),m.end());
m.clear(); //清空
map<int, string> m;
m[1] = "age";
m[1] = "fdsa"; // 成功,会改变原来数据的值
m.insert(pair(1, "fdsa")); //失败
m.insert(map<int, string>::value_type(1, "fda")); //失败
cout << m.at(1) << endl;
cout << m[2] << endl; //容器种的值不存在,会返回空值。
}
int main()
{
test02();
}
map查找和统计
#include <algorithm> //算法
#include <iostream>
#include <map>
#include <string>
using namespace std;
// map容器 构造和赋值
void printMap(map<int, int>& m)
{
for (map<int, int>::iterator it = m.begin(); it != m.end(); it++) {
cout << "index:" << it->first << " ";
cout << "value:" << it->second << " ";
}
cout << endl;
}
void test02()
{
map<int, int> m;
m.insert(make_pair(1, 100));
m.insert(make_pair(2, 200));
m.insert(make_pair(3, 300));
map<int, int>::iterator pos = m.find(10);
if (pos != m.end()) { //找不到返回end
cout << "查找" << (*pos).first << " " << (*pos).second << endl;
} else {
cout << "查找不到" << (*pos).first << " " << (*pos).second << endl;
}
printMap(m);
//统计
cout << "元素个数" << m.count(10) << endl;
}
int main()
{
test02();
}
map容器排序
#include <algorithm> //算法
#include <iostream>
#include <map>
#include <string>
using namespace std;
// map容器 构造和赋值
void printMap(map<int, int>& m)
{
for (map<int, int>::iterator it = m.begin(); it != m.end(); it++) {
cout << "index:" << it->first << " ";
cout << "value:" << it->second << " ";
}
cout << endl;
}
class MyCompare {
public:
bool operator()(int v1, int v2) const
{
//降序
return v1 > v2;
}
};
void test02()
{
map<int, int, MyCompare> m;
m.insert(make_pair(1, 100));
m.insert(make_pair(3, 300));
m.insert(make_pair(2, 200));
for (map<int, int, MyCompare>::iterator it = m.begin(); it != m.end(); it++) {
cout << "index:" << it->first << " ";
cout << "value:" << it->second << " ";
}
cout << endl;
}
int main()
{
test02();
}