А.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
возвращает пару, член