21xrx.com
2025-03-27 12:13:14 Thursday
文章检索 我的文章 写文章
使用c++实现按value排序的map
2023-06-22 17:50:01 深夜i     12     0
C++ Map 排序 按value 实现

Map是一种关联式容器,它存储了一组键值对(pair),每个键对应唯一的值。在C++中,Map使用红黑树实现,因此,它的所有操作的时间复杂度都为O(log N)。

在实际开发中,我们通常需要对Map中的元素进行排序。默认情况下,Map会按照键的值进行排序,但是有时候我们需要按照值进行排序。这时,我们可以使用STL库中的multimap来实现。

multimap是一种关联式容器,与map类似,它存储了一组键值对,但一个键可以对应多个值。此外,multimap还提供了排序功能,我们可以根据值来排序。

下面是使用c++实现按value排序的map的代码:

#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
typedef pair<string, int> PAIR;
bool cmp(const PAIR& x, const PAIR& y)
  return x.second < y.second;
int main() {
  map<string, int> m;
  m["Tom"] = 90;
  m["Lily"] = 85;
  m["Lucy"] = 92;
  m["Jack"] = 87;
  vector<PAIR> vec(m.begin(), m.end());
  sort(vec.begin(), vec.end(), cmp);
  for (vector<PAIR>::iterator it = vec.begin(); it != vec.end(); ++it)
    cout << it->first << " " << it->second << endl;
  
  return 0;
}

在这个例子中,我们使用了STL中的sort函数来排序。sort函数的第三个参数是一个比较函数,它用来指定按什么条件进行排序。在这里,我们定义了一个自定义的比较函数cmp,它比较pair的第二个元素(即值),并将multimap中的元素按照值的大小排序。

总之,使用STL库中的multimap和sort函数,我们可以很方便地实现按value排序的map。这对于数据处理有着重要的应用价值,因为它可以快速地帮助我们找到Map中的最小值、最大值和排序结果。

  
  

评论区