list<map>排序sort降序

如果你想对一个含有若干个 map 元素的 list 进行排序,可以使用 std::sort 函数。你需要自己提供一个比较函数来告诉 sort 如何比较两个元素。例如,如果你想按照每个 map 的"age"字段进行降序排序,你可以使用如下代码:

#include <algorithm>
#include <functional>
#include <map>
#include <vector>
// 定义比较函数,按照 map 的 "age" 字段进行比较
bool compare(const std::map<std::string, int> &a,
             const std::map<std::string, int> &b) {
  return a["age"] > b["age"];
int main() {
  // 定义一个含有若干个 map 的 list
  std::vector<std::map<std::string, int>> maps = {
      {{"name", "Alice"}, {"age", 20}},
      {{"name", "Bob"}, {"age", 30}},
      {{"name", "Charlie"}, {"age", 25}}
  // 使用 std::sort 对 list 进行排序
  std::sort(maps.begin(), maps.end(), compare);
  // 输出排序后的 list
  for (const auto &m : maps) {
    std::cout << m["name"] << ": " << m["age"] << std::endl;
  return 0;

输出结果如下:

Bob: 30
Charlie: 25
Alice: 20

注意,如果你希望对一个含有若干个map元素的list进行升序排序,你可以在比较函数中将比较结果取反:

bool compare(const std::map<std::string, int> &a,
             const std::map<std::string, int> &b) {
  return a["age"] < b["age"];

希望这些信息对你有帮助。

  •