您的位置:首页 > 编程语言 > C语言/C++

c++ map的一些基础函数用法

2017-09-11 20:42 429 查看
#include <stdio.h>
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <cctype>
#include <string>
#include <cstring>
#include <algorithm>
#include <ctime>
#include <map>
#include <vector>
using namespace std;

typedef pair<string, int> p;

bool cmp(p m1,p m2) {
return m1.second<m2.second;      //自定义的比较方法 按照value的从小到大输出
}

string week[7]={"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};

int main()
{
map<string, int> maps;
vector<pair<string, int>>v;
cout<<"----------------------"<<endl;

for (int i=0;i<7;i++){         //  给map赋值 也可以用 insert(make_pair());
maps[week[i]]=i;

}

map<string, int>::reverse_iterator iter;              //  map  默认按照key的从大到小输出 这里是倒序遍历
for (iter=maps.rbegin();iter!=maps.rend();iter++) {
cout<<"["<<iter->first<<"-"<<iter->second<<"]"<<endl;
v.push_back(make_pair(iter->first,iter->second));
}
cout<<"----------------------"<<endl;

sort(v.begin(),v.end(),cmp);     // 排序
for (int i=0;i<v.size();i++) {
cout<<v[i].first<<"-"<<v[i].second<<endl;        // 利用vector 实现map的按照value的从小到大输出;
}

cout<<"----------------------"<<endl;

string needfind="Monday";
map<string,int>::iterator it=maps.find(needfind);    // find 查找是否有指定的key,不存在返回end
if (it==maps.end()) cout<<"not find"<<endl;
else cout<<"I Find It"<<endl;

cout<<"----------------------"<<endl;

int num=maps.count("Monday1");
if (num)cout<<"I Find It"<<endl;                 //  count  找指定key的个数 没有则为0;
else cout<<"not find"<<endl;

cout<<"----------------------"<<endl;

string needfind2="Monday";
map<string,int>::iterator it2=maps.find(needfind2);    // erase 删除 某个指定key的元素,也可以删除范围内的key
if (it==maps.end()) cout<<"not find"<<endl;
else cout<<"I Find It and I delete it"<<endl,maps.erase(it2);

map<string,int>::iterator it3;
for (it3=maps.begin();it3!=maps.end();it3++) {
cout<<it3->first<<"-"<<it3->second<<endl;
}
cout<<"!!! Monday is deleted"<<endl;

cout<<"----------------------"<<endl;

map<int,string> m1,m2;                          //   swap 实现两个map互换
m1.insert(make_pair(1,"m1"));
m2.insert(make_pair(2,"m2"));

for (map<int,string>::iterator it4=m1.begin();it4!=m1.end();it4++) {
cout<<"我是m1 我的值是"<<endl;
cout<<it4->first<<"-"<<it4->second<<endl;
}
m1.swap(m2);                //  m1和m2互换了 ;
for (map<int,string>::iterator it4=m1.begin();it4!=m1.end();it4++) {
cout<<"我是m1 我的值是"<<endl;
cout<<it4->first<<"-"<<it4->second<<endl;
}
return 0;
}

输出结果 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: