如何使用C++ STL将Vector降序排序?

如何使用C++ STL将Vector降序排序?

Vector是C++标准库中一个非常常用的容器,它可以动态地增加和缩减其内部元素的容量。有时候需要对Vector中的元素进行排序的操作,C++ STL库中提供了非常便捷的排序方法,本文将介绍如何使用C++ STL将Vector降序排序。

代码示例

假设我们有一个存储int类型数据的Vector,并且需要将其按照降序排列,首先我们需要#include \<vector>头文件,然后使用std::sort函数进行排序:

#include <iostream>
#include <vector>
#include <algorithm>

int main()
{
    std::vector<int> vec = { 3, 6, 2, 4, 8, 1, 5, 7 };
    std::sort(vec.begin(), vec.end(), std::greater<int>());

    for (auto i : vec)
    {
        std::cout << i << " ";
    }
    std::cout << std::endl;

    return 0;
}

这里的std::greater<int>()表示要按降序排序,如果要升序排序只需要使用std::less()即可。

这里需要注意的是,使用std::sort函数排序的也可以是其他STL容器,例如list等。

除了上面这种方法外,还可以使用lambda表达式进行降序排序:

std::sort(vec.begin(), vec.end(), [](int a, int b) {return a > b; });

简单说明一下lambda表达式,它其实就是一个匿名函数,这里是一个非常简单的lambda表达式,其中[]对应lambda表达式的捕获列表,可以省略;(int a, int b)是lambda的参数列表;{return a > b;}是lambda的函数体。整个表达式的含义是比较a和b的大小,a大于b则返回true,否则返回false。

完整示例代码

#include <iostream>
#include <vector>
#include <algorithm>

int main()
{
    std::vector<int> vec = { 3, 6, 2, 4, 8, 1, 5, 7 };
    std::sort(vec.begin(), vec.end(), std::greater<int>());

    for (auto i : vec)
    {
        std::cout << i << " ";
    }
    std::cout << std::endl;

    return 0;
}

结论

使用C++ STL对Vector进行降序排序非常方便,只需要使用std::sort函数即可实现。通过lambda表达式可以达到更灵活的排序方式。但需要注意的是,这里只介绍了如何对int类型的Vector进行排序,如果要对其他类型的Vector进行排序,例如存储自定义类的Vector,则需要自定义比较函数。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程