zoukankan      html  css  js  c++  java
  • STL中map按值(value)排序

    STL中map按值(value)排序 - wanpengcoder - 博客频道 - CSDN.NET


    STL中map按值(value)排序


    分类:
    C/C++


    912人阅读
    评论(0)
    收藏
    举报

    文中的部分内容参考自互联网,感谢作者。

    map默认是按照键(key)排序的。很多时候我们需要按值(value)排序,靠map里的

    算法当然是不行的,那么可以把它转存到vector中,在对vector按照一定的规则排序即可。

    [cpp:showcolumns] view plaincopyprint?
    ·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
    1. //示例代码:输入单词,统计单词出现次数并按照单词出现次数从多到少排序  
    2. #include <cstdlib>  
    3. #include <map>  
    4. #include <vector>  
    5. #include <string>  
    6. #include <algorithm>  
    7. #include <iostream>  
    8.    
    9. void sortMapByValue(std::map<std::string, int>& tMap, std::vector<std::pair<std::string, int> >& tVector);  
    10. int cmp(const std::pair<std::string, int>& x, const std::pair<std::string, int>& y);  
    11.    
    12. int main()  
    13. {  
    14.  std::map<std::string, int> tMap;  
    15.  std::string word;  
    16.  while (std::cin >> word)  
    17.  {  
    18.  std::pair<std::map<std::string, int>::iterator, bool> ret = tMap.insert(std::make_pair(word, 1));  
    19.  if (!ret.second)  
    20.  ++ret.first->second;  
    21.  }   
    22.    
    23.  std::vector<std::pair<std::string,int> > tVector;  
    24.  sortMapByValue(tMap,tVector);  
    25.  for(int i=0;i<tVector.size();i++)  
    26.  {  
    27.     std::cout<<tVector[i].first<<": "<<tVector[i].second<<std::endl;  
    28.  }    
    29.    
    30.  system("pause");  
    31.  return 0;  
    32. }  
    33.    
    34. int cmp(const std::pair<std::string, int>& x, const std::pair<std::string, int>& y)  
    35. {  
    36.  return x.second > y.second;  
    37. }  
    38.    
    39. void sortMapByValue(std::map<std::string, int>& tMap, std::vector<std::pair<std::string, int> >& tVector)  
    40. {  
    41.  for (std::map<std::string, int>::iterator curr = tMap.begin(); curr != tMap.end(); curr++)  
    42.  {  
    43.  tVector.push_back(std::make_pair(curr->first, curr->second));  
    44.  }  
    45.    
    46.  std::sort(tVector.begin(), tVector.end(), cmp);  
    47. }  
  • 相关阅读:
    HTML5兼容性问题
    网站——如何实现轮播效果
    总结(1)
    MAC_terminal_终端设置
    JS_tips(updating):执行时间;
    Object:window_方法
    Object:Array数组——对象的集合
    Object:Math——对数据的数学计算
    js 统计字符串或者数组的出现次数
    react-native项目实战积累
  • 原文地址:https://www.cnblogs.com/lexus/p/2604704.html
Copyright © 2011-2022 走看看