构造、赋值
#include <iostream>
using namespace std;
#include <map>
void printf(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 test()
{
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));
printf(m);
//拷贝构造
map<int,int>m2(m);
printf(m2);
//赋值
map<int,int>m3;
m3=m2;
printf(m3);
}
int main()
{
test();
return 0;
}
map大小和交换
map插入和删除
#include <iostream>
using namespace std;
#include <map>
void printf(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 test()
{
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; //第四种 ,不建议插入,但可以利用key访问value
printf(m);
//删除
m.erase(m.begin());
printf(m);
m.erase(3);//按照key删除
printf(m);
//清空
//m.erase(m.begin(),m.end());
m.clear();
printf(m);
}
int main()
{
test();
return 0;
}
查找和统计
排序
利用仿函数
#include <iostream>
using namespace std;
#include <map>
class compare
{
public:
bool operator()(int v1,int v2)
{
return v1>v2; //降序
}
};
void test()
{
map<int,int,compare>m;
m.insert(make_pair(1,10));
m.insert(make_pair(2,20));
m.insert(make_pair(3,30));
m.insert(make_pair(4,40));
for(map<int,int,compare>::iterator it=m.begin(); it != m.end(); it++)
{
cout<<"key : "<<it->first<<" value :"<<it->second<<endl;
}
}
int main()
{
test();
return 0;
}
自定义类型排下序:
#include <iostream>
#include <map>
#include <string>
using namespace std;
class person
{
public:
person(string n,int a)
{
this->name=n;
this->age=a;
}
string name;
int age;
};
class compare
{
public:
bool operator()(const person& p1,const person& p2)
{
return p1.age>p2.age; //年龄从大到小
}
};
void test()
{
map<person,int,compare>m;
person p1("唐",18);
person p2("孙",1000);
person p3("猪",900);
person p4("沙",950);
person p5("付",23);
m.insert(pair<person,int>(p1,2));
m.insert(pair<person,int>(p2,3));
m.insert(pair<person,int>(p3,4));
m.insert(pair<person,int>(p4,5));
m.insert(pair<person,int>(p5,1));
for(map<person,int,compare>::iterator it=m.begin(); it != m.end();it++)
{
cout<<"key:姓名 "<<(it->first).name <<" 年龄"<<(it->first).age<<" value:"<<it->second<<endl;
}
}
int main()
{
test();
return 0;
}