×
Traktatov.net » Язык программирования C++. Пятое издание » Читать онлайн
Страница 710 из 714 Настройки
.

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