码迷,mamicode.com
首页 > 编程语言 > 详细

c++中map按key和value排序

时间:2019-01-27 13:04:27      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:iter   insert   void   less   stream   需要   自定义   ++   set   

 1 ```
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<vector>
 5 #include<map>
 6 #include<set>
 7 using namespace std;
 8 
 9 /*按key升序*/
10 void test01(){
11     map<string,int,less<string> > map1;
12     map1.insert(pair<string,int>("aba",3));
13     map1.insert(pair<string,int>("aaa",2));
14     map1.insert(pair<string,int>("ddd",1));
15     map1.insert(pair<string,int>("ccc",4));
16 
17     for(map<string,int>::iterator it=map1.begin(); it!=map1.end(); it++ ){
18         cout<<(*it).first<<" : "<<(*it).second<<endl;
19     }
20 }
21 /*按key降序*/
22 void test02(){
23     map<string,int,greater<string> > map1;
24     map1.insert(pair<string,int>("aba",3));
25     map1.insert(pair<string,int>("aaa",2));
26     map1.insert(pair<string,int>("ddd",1));
27     map1.insert(pair<string,int>("ccc",4));
28 
29     for(map<string,int>::iterator it=map1.begin(); it!=map1.end(); it++ ){
30         cout<<(*it).first<<" : "<<(*it).second<<endl;
31     }
32 }
33 /*----------------------------------------------------*/
34 /*编写类或者结构体按key升序或者降序*/
35 class flag{
36 public:
37     bool operator()(string v1,string v2){
38         return v1<v2;
39     }
40 };
41 
42 void test03(){
43     map<string,int,flag> map1;
44     map1.insert(pair<string,int>("aba",3));
45     map1.insert(pair<string,int>("aaa",2));
46     map1.insert(pair<string,int>("ddd",1));
47     map1.insert(pair<string,int>("ccc",4));
48 
49     for(map<string,int>::iterator it=map1.begin(); it!=map1.end(); it++ ){
50         cout<<(*it).first<<" : "<<(*it).second<<endl;
51     }
52 }
53 /*-------------------------------------------------------*/
54 /*自定义编写类或者函数或者结构体进行值排序*/
55 /*自定义函数编写不用(),自定义类或者结构体需要()*/
56 bool flag_2(pair<string,int> o1,pair<string,int> o2){
57     return o1.second>o2.second;
58 }
59 class flag_2{
60 public:
61     bool operator()(pair<string,int> o1,pair<string,int> o2){
62         return o1.second>o2.second;
63     }
64 };
65 struct flag_2{
66     bool operator()(pair<string,int> o1,pair<string,int> o2){
67         return o1.second<o2.second;
68     }
69 };
70 void test04(){
71     map<string,int> map1;
72     map1.insert(pair<string,int>("aba",3));
73     map1.insert(pair<string,int>("aaa",2));
74     map1.insert(pair<string,int>("ddd",1));
75     map1.insert(pair<string,int>("ccc",4));
76     
77     //利用vector进行value排序
78     vector< pair<string,int> > dic1(map1.begin(),map1.end());
79     sort(dic1.begin(),dic1.end(),flag_2());
80 
81     for(int i=0; i<dic1.size(); i++ ){
82         cout<<dic1[i].first<<" "<<dic1[i].second<<endl;
83     }
84 }
85 int main(){
86     //test01();
87     //test02();
88     //test03();
89     test04();
90 
91     return 0;
92 }
93 
94 ```

 

c++中map按key和value排序

标签:iter   insert   void   less   stream   需要   自定义   ++   set   

原文地址:https://www.cnblogs.com/Bravewtz/p/10325821.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!