1.3. Алгоритмы
1.3.1. Общее описание
Данный раздел содержит описание всех алгоритмов стандартной библиотеки шаблонов, включенных в стандарт C++11. Новые алгоритмы, появившиеся в этом стандарте, помечены текстом C++11. Алгоритм random_shuffle, который объявлен в стандарте C++11 устаревшим, помечен текстом deprecated. Алгоритмы, определенные в заголовочном файле <algorithm>, описаны в п. 1.3.3, алгоритмы, определенные в заголовочном файле <numeric>, – в п. 1.3.4. В каждом пункте алгоритмы располагаются в алфавитном порядке своих имен.
Все алгоритмы определены в пространстве имен std. В таблице 5 алгоритмы сгруппированы в соответствии со способом их применения.
Таблица 5
Алгоритмы STL по категориям
1.3.2. Соглашения об именовании параметров
В качестве типов для параметров-итераторов first, last, result, result_last (возможно, дополненных номерами 1 или 2) указываются:
• InIter – итератор чтения (input);
• OutIter – итератор записи (output);
• FwdIter – однонаправленный итератор (forward);
• BidiIter – двунаправленный итератор (bidirectional);
• RandIter – итератор произвольного доступа (random).
В качестве типа значения для входных последовательностей указывается T; если выходная последовательность может иметь тип элементов, отличный от T, то для него используется имя TRes. Итераторы из диапазонов [first, last), [first1, last1), [first2, last2) обозначаются с помощью переменных p, p1, p2 соответственно.
Для типов функциональных объектов в описаниях алгоритмов используются следующие имена:
• UnaryOp – унарная операция (функциональный объект с операцией (), имеющей один параметр типа T; при этом тип возвращаемого значения может отличаться от типа T);
• BinaryOp – бинарная операция (функциональный объект с операцией (), имеющей два параметра, как правило, одинакового типа T; тип возвращаемого значения может отличаться от типа T); если параметры бинарной операции могут иметь различные типы, то об этом явно говорится в описании соответствующего алгоритма;
• Predicate – унарный предикат (унарная операция, возвращающая логическое значение);
• BinaryPredicate – бинарный предикат (бинарная операция с параметрами типа T, возвращающая логическое значение);
• Compare – бинарный предикат, предназначенный для сравнения элементов (аналог операции <);
• Generator – генератор последовательности (функциональный объект