← Patterns
Sort a range of elements
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>{});
} |
This pattern is licensed under the CC0 Public Domain Dedication.
Requires
c++11
or newer.
Intent
Sort elements in a range into a given order.
Description
On line 8, we create a std::array
of int
s
that we wish to sort.
On line 10, we call the standard alrogithm
std::sort
, which sorts the range of
elements between the given pair of iterators. We use
std::begin
and
std::end
to get the begin and end iterators
for the array.
By default, std::sort
uses operator<
to sort the range, which
arranges the elements in ascending order. It can, however, be
passed a comparison function object to use when comparing
elements. On lines 12–13, we pass an object of type
std::greater<int>
, which is a
comparison function object that uses operator>
. Accordingly, this
sorts the array in descending order.