Название: Введение в стандартную библиотеку шаблонов C++. Описание, примеры использования, учебные задачи
Автор: Михаил Абрамян
Издательство: Южный Федеральный Университет
Жанр: Учебная литература
isbn: 978-5-9275-2374-0
isbn:
• 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).
Во всех алгоритмах, связанных с копированием или перемещением данных, предполагается, что в результирующей последовательности зарезервировано достаточно места для размещения всех получаемых элементов.
Всюду при указании сложности алгоритма под N понимается разность итераторов distance(first, last) (если N имеет индекс, то подразумевается, что итераторы имеют такой же номер, например N1 = distance(first1, last1)). Если сложность алгоритма является постоянной, т. е. не зависит от размера обрабатываемой последовательности, то она не указывается.
1.3.3. Алгоритмы общего назначения
Алгоритмы, описываемые в данном пункте, определены в заголовочном файле <algorithm>.
Находит первую пару соседних элементов из диапазона [first, last), которые равны (или, при наличии предиката pred(*p, *(p + 1)), для которых данный предикат возвращает true). Возвращает итератор, связанный с первым элементом найденной пары, или last, если пара не найдена.
Сложность линейная (не более N + 1 вызовов pred).
Возвращает true, если все элементы диапазона [first, last) удовлетворяют предикату pred. В случае пустого диапазона также возвращается true.
Сложность линейная (не более N вызовов pred).
Возвращает true, если хотя бы один элемент диапазона [first, last) удовлетворяет предикату pred. В случае пустого диапазона возвращается false.
Сложность линейная (не более N вызовов pred).
СКАЧАТЬ