prev_permutation(beg, end)
prev_permutation(beg, end, comp)
Подобен алгоритму next_permutation()
, но преобразует последовательность в предыдущую версию перестановки. Если текущая версия является самой младшей, переупорядочивает последовательность в самую старшую и возвращает значение false
.
А.2.8. Алгоритмы набора для отсортированных последовательностей
Алгоритмы набора реализуют присущие набору операции, применяемые для отсортированной последовательности. Не следует путать эти алгоритмы с функциями библиотечного контейнера set
(набор). Они обеспечивают присущее набору поведение на базе обычного последовательного контейнера (например, vector
, list
и т.д.) или другой последовательности (например, потока ввода).
Поскольку эти алгоритмы обрабатывают элементы последовательно, им требуются итераторы ввода. За исключением алгоритма includes
всем им необходим итератор вывода. Алгоритмы возвращают итератор dest
, увеличенный так, чтобы указывать на следующий элемент после последнего записанного.
Каждый алгоритм предоставлен в двух формах: использующей для сравнения элементов оператор <
или функцию сравнения.
includes(beg, end, beg2, end2)
includes(beg, end, beg2, end2, comp)
Возвращает значение true
, если каждый элемент во второй последовательности содержится в исходной последовательности. В противном случае возвращает значение false
.
set_union(beg, end, beg2, end2, dest)
set_union(beg, end, beg2, end2, dest, comp)
Создает сортируемую последовательность элементов, которые находятся в обеих последовательностях. Элементы, которые находятся в обеих последовательностях, записываются в указанную итератором dest
результирующую последовательность в одном экземпляре.
set_intersection(beg, end, beg2, end2, dest)
set_intersection(beg, end, beg2, end2, dest, comp)
Создает сортируемую последовательность элементов, представленных в обеих последовательностях. Результат сохраняется в последовательности, указанной итератором dest
.
set_difference(beg, end, beg2, end2, dest)
set_difference(beg, end, beg2, end2, dest, comp)
Создает сортируемую последовательность элементов, представленных в первом контейнере, но не во втором.
set_symmetric_difference(beg, end, beg2, end2, dest)
set_symmetric_difference(beg, end, beg2, end2, dest, comp)
Создает сортируемую последовательность элементов, представленных в любом из контейнеров, но не в обоих контейнерах.
А.2.9. Минимальные и максимальные значения
Эти алгоритмы используют при сравнении либо оператор <
для типа элемента, либо заданную функцию сравнения. Алгоритмы первой группы работают со значениями, а не с последовательностями. Алгоритмы второй группы получают последовательность, обозначенную итераторами ввода.
min(val1, val2)
min(val1, val2, comp)
min(init_list)
min(init_list, comp)
max(val1, val2)
max(val1, val2, comp)
max(init_list)
max(init_list, comp)
Эти алгоритмы возвращают минимум или максимум значений val1
и val2
либо значений из списка initializer_list
. Тип аргументов должен точно совпадать. Аргументы и тип возвращаемого значения являются ссылками на константы, а значит, объекты не копируются.
minmax(val1, val2)
minmax(val1, val2, comp)
minmax(init_list)
minmax(init_list, comp)
Возвращают пару (см. раздел 11.2.3), член first
которой содержит меньшее из предоставленных значений, а член second
— большее. Версия со списком initializer_list
возвращает пару, член first
которой содержит наименьшее значение в списке, a second
— наибольшее.
min_element(beg, end)
min_element(beg, end, comp)
max_element(beg, end)
max_element(beg, end, comp)
minmax_element(beg, end)
minmax_element(beg, end, comp)