Генераторы перестановок (Permutation generators)
Генераторы перестановок (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);
next_permutation берёт последовательность, определённую диапазоном [first, last), и трансформирует её в следующую перестановку. Следующая перестановка находится, полагая, что множество всех перестановок лексикографически сортировано относительно operator‹ или comp. Если такая перестановка существует, возвращается true. Иначе он трансформирует последовательность в самую маленькую перестановку, то есть сортированную по возрастанию, и возвращает false. Максимально выполняется (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);
prev_permutation берёт последовательность, определённую диапазоном [first, last), и трансформирует её в предыдущую перестановку. Предыдущая перестановка находится, полагая, что множество всех перестановок лексикографически сортировано относительно operator‹ или comp. Если такая перестановка существует, возвращается true. Иначе он трансформирует последовательность в самую большую перестановку, то есть сортированную по убыванию, и возвращает false. Максимально выполняется (last - first)/2 перестановок.