21xrx.com
2024-11-24 18:07:29 Sunday
登录
文章检索 我的文章 写文章
C++按照map的value排序
2023-07-10 16:41:29 深夜i     --     --
C++ map value 排序 algorithm

在C++中,Map被广泛使用来存储键值对。Map是一种关联式容器,存储方式为键值对,且元素按照键的大小自动排序。但是,如果我们想要按照Map的value进行排序,该怎么办呢?

在C++中,可以使用STL的排序函数`std::sort`来对Map的value进行排序。具体来说,我们可以将Map的所有元素存储到一个vector中,然后使用`std::sort`函数对vector进行排序。排序结束后,再将vector中的元素重新存储回Map中。

下面是一个按照Map的value排序的示例代码:


#include <iostream>

#include <map>

#include <vector>

#include <algorithm>

bool sort_by_value(const std::pair<std::string, int>& a, const std::pair<std::string, int>& b)

  return a.second < b.second;

int main() {

  // 创建一个Map

  std::map<std::string, int> my_map = {

     50,

    "banana",

    "pear",

     40

  };

  

  // 将Map中的元素存储到vector中

  std::vector<std::pair<std::string, int>> my_vector(my_map.begin(), my_map.end());

  

  // 使用sort函数对vector进行排序

  std::sort(my_vector.begin(), my_vector.end(), sort_by_value);

  

  // 将排序后的vector中的元素重新存储回Map中

  my_map.clear();

  for (auto it = my_vector.begin(); it != my_vector.end(); ++it) {

    my_map.insert(*it);

  }

  

  // 输出按照value排序后的Map

  for (const auto& kv : my_map) {

    std::cout << kv.first << ": " << kv.second << std::endl;

  }

  

  return 0;

}

在上面的代码中,我们在sort函数中传入了一个`sort_by_value`函数作为比较函数。这个比较函数接受两个`std::pair `类型的参数,即Map的键值对,然后按照其中的int值进行比较,返回`true`或`false`,表示第一个参数是否小于第二个参数。这样,`std::sort`函数就会按照Map的value进行排序了。

最后,我们将排序后的vector中的元素重新存储回Map中,并输出按照value排序后的Map。运行上面的代码,输出结果将按照value的大小从小到大依次为:


banana: 20

pear: 30

orange: 40

apple: 50

在实际开发中,按照Map的value进行排序可以帮助我们更方便地处理数据,比如根据学生成绩对学生进行排序等。使用上面的排序方法,可以轻松地完成Map的value排序。

  
  

评论区

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