← 模式

对一个范围内的元素进行排序

1234567891011121314#include <array> #include <algorithm> #include <iterator> #include <functional> int main() { std::array<int, 5> arr = {3, 4, 1, 5, 2}; std::sort(std::begin(arr), std::end(arr)); std::sort(std::begin(arr), std::end(arr), std::greater<int>{}); }

此模式采用 CC0 公共领域贡献 许可。

需要 c++11 或更新版本。

意图

将一个范围内的元素按给定顺序排序。

描述

第 8 行,我们创建了一个希望排序的 int 类型的 std::array

第 10 行,我们调用了标准算法 std::sort,它会对给定的一对迭代器之间的元素范围进行排序。我们使用 std::beginstd::end 来获取数组的起始和结束迭代器。

默认情况下,std::sort 使用 operator< 对范围进行排序,这将使元素按升序排列。但是,它也可以接受一个比较函数对象,用于比较元素。在第 12-13 行,我们传入了一个 std::greater<int> 类型的对象,这是一个使用 operator> 的比较函数对象。因此,这将使数组按降序排序。

贡献者

  • Joseph Mansfield

最后更新

2017年12月9日

来源

在 GitHub 上 Fork 此模式

分享