• c++中map按key和value排序


     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 ```
    有些目标看似很遥远,但只要付出足够多的努力,这一切总有可能实现!
  • 相关阅读:
    python中的函数编程
    Python中的类型关系和继承关系
    MySQLdb for Python使用指南
    调试模式
    js window.open打开新页面
    JVM调优
    jacoco(spring boot启动) agent tcpserver使用方案
    C#多线程之ManualResetEvent和AutoResetEvent
    下载verycd的方法下载电驴资源隐藏资源的最新可用方法
    C# 多线程之信号量Semaphore
  • 原文地址:https://www.cnblogs.com/Bravewtz/p/10325821.html
Copyright © 2020-2023  润新知