21xrx.com
2024-11-05 16:35:43 Tuesday
登录
文章检索 我的文章 写文章
使用c++实现按value排序的map
2023-06-22 17:50:01 深夜i     --     --
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中的最小值、最大值和排序结果。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复