📜  按C ++ STL中的值对地图排序(1)

📅  最后修改于: 2023-12-03 15:10:08.342000             🧑  作者: Mango

按C ++ STL中的值对地图排序

在C ++中,STL(标准模板库)是一组用于处理数据的通用模板的集合。它提供了许多用于操作数据的函数和数据结构,包括排序函数。

在本文中,我们将介绍如何使用STL中的sort函数,按照地图中的值来排序。

代码

下面是按照地图值排序的C ++ STL代码示例:

#include <iostream>
#include <map>
#include <algorithm>

int main()
{
    std::map<int, int> mymap;
    mymap[3] = 30;
    mymap[2] = 20;
    mymap[1] = 10;

    // 使用值对map进行排序
    std::map<int, int, std::less<int>> sorted_map;
    std::copy(mymap.begin(), mymap.end(),
              std::inserter(sorted_map, sorted_map.begin()));

    // 输出已排序的地图
    std::cout << "Sorted Map: \n";
    for (auto const& pair : sorted_map) {
        std::cout << "{" << pair.first << ": " << pair.second << "}\n";
    }

    return 0;
}
解析

在上面的代码中,我们首先创建了一个名为mymap的map。我们添加了一些键值对并没有按照任何特定的顺序排序。

然后,我们创建一个名为sorted_map的新map,使用STL中的std::less<int>排序函数将其初始化为ISO定义的默认排序函数之一。

使用std::copy()函数将mymap的内容复制到sorted_map中,并指示将源map的所有元素插入到目标map的开头处。

最后,我们使用一个循环输出排序后的地图。您会看到,此次排序按照值的大小进行排序,而不是按照键。

结论

使用C ++ STL,我们可以使用sort函数轻松对任何map进行排序。只需使用std::copy()将map内容复制到新的已排序map中,然后使用循环输出新map即可。