zoukankan      html  css  js  c++  java
  • 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 ```
    有些目标看似很遥远,但只要付出足够多的努力,这一切总有可能实现!
  • 相关阅读:
    PHP分页类
    phpexcel 控制导出数据内容和行数
    phpexcel 导入 和 导出
    PHP无限极分类
    php 对查询结果集进行排序
    php 删除文件夹及文件夹内文件函数
    php 字符串截取函数
    php 获取用户登录的ip
    js layer页面层加载新网站
    分享到qq
  • 原文地址:https://www.cnblogs.com/Bravewtz/p/10325821.html
Copyright © 2011-2022 走看看