28 Algorithms library [algorithms]

28.7 Sorting and related operations [alg.sorting]

28.7.11 Permutation generators [alg.permutation.generators]

template<class BidirectionalIterator> bool next_permutation(BidirectionalIterator first, BidirectionalIterator last); template<class BidirectionalIterator, class Compare> bool next_permutation(BidirectionalIterator first, BidirectionalIterator last, Compare comp);

Requires: BidirectionalIterator должны удовлетворять требованиям ValueSwappable.

Effects: Принимает последовательность, определенную диапазоном, [first, last) и преобразует ее в следующую перестановку. Следующая перестановка находится в предположении, что множество всех перестановок лексикографически отсортировано относительно operator< или comp.

Returns: true если такая перестановка существует. В противном случае он преобразует последовательность в наименьшую перестановку, то есть в сортированную по возрастанию, и возвращает false.

Complexity: В большинстве (last - first) / 2 свопов.

template<class BidirectionalIterator> bool prev_permutation(BidirectionalIterator first, BidirectionalIterator last); template<class BidirectionalIterator, class Compare> bool prev_permutation(BidirectionalIterator first, BidirectionalIterator last, Compare comp);

Requires: BidirectionalIterator должны удовлетворять требованиям ValueSwappable.

Effects: Принимает последовательность, определенную диапазоном, [first, last) и преобразует ее в предыдущую перестановку. Предыдущая перестановка находится в предположении, что набор всех перестановок лексикографически отсортирован относительно operator< или comp.

Returns: true если такая перестановка существует. В противном случае он преобразует последовательность в наибольшую перестановку, то есть отсортированную по убыванию, и возвращает false.

Complexity: В большинстве (last - first) / 2 свопов.