В случае итератора r4 ситуация интереснее. Несмотря на то, что значение, которое он возвращал, пропало, сам этот итератор сохранился, поскольку сохранился связанный с ним прямой итератор r4.base (и, хотя это не отражено в приведенных данных, после выполнения операции удаления значение r4.base не изменилось). Однако, поскольку после удаления элемента 3 элементом, предшествующим «базовому» элементу, связанному с итератором r4.base, оказался элемент 2, именно его значение возвращается при разыменовании обратного итератора r4. Таким образом, перед удалением элемента 3 значение итератора r4 было равно 3, а после его удаления значение становится равным
1.3. Алгоритмы
1.3.1. Общее описание
Данный раздел содержит описание всех алгоритмов стандартной библиотеки шаблонов, включенных в стандарт C++11. Новые алгоритмы, появившиеся в этом стандарте, помечены текстом
Все алгоритмы определены в пространстве имен std. В таблице 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 – генератор последовательности (функциональный объект с операцией , не имеющей параметров и возвращающей значение типа TRes);
• RandomGenerator – генератор случайных целых чисел, равномерно распределенных в диапазоне [0, n).