如何使用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,则需要自定义比较函数。