← 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 ints 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.

Contributors

  • Joseph Mansfield

Last Updated

09 December 2017

Source

Fork this pattern on GitHub

Share