Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
###Cpp_лкц1_1.09_11_#дляБАК#29_01_12.doc
Скачиваний:
40
Добавлен:
29.04.2019
Размер:
6.42 Mб
Скачать

Глава 14. Алгоритмы

347

// Поиск элемента, удовлетворяющего условию 10<х<50: cout « *find_if(v.begin(), v.endO. In_10_50O) « endl; return 0; } Результат работы программы:

56 34 54 0 76 23 51 11 51 11 76 88

51

34

find_first_of

Алгоритм find_first_of находит первое вхождение в первую последовательность элемента из второй последовательности:

tempiate<class Forl, class For2>

Forl find_first_of(Forl firstl. Forl lastl. For2 first2. For2 last2): tempiate<class Forl, class For2, class BinPred> Forl find_first_of(Forl firstl. Forl lastl, For2 first2, For2 last2, BinPred pred);

Границы последовательностей задаются с помощью итераторов. Первая форма алгоритма ищет вхождение любого элемента, а вторая — элемента, для которого выполняется бинарный предикат, анализирующий соответствующие элементы первой и второй последовательности. В случае неудачного поиска возвращается

lastl.

find_end

Алгоритм fi nd_end находит первое вхождение в первую последовательность второй последовательности (с анализом предиката или без) и возвращает итератор на последний совпадающий элемент:

tempiate<class Forl, class For2>

Forl find_end(Forl firstl, Forl lastl. For2 first2. For2 last2): tempiate<class Forl, class For2, class BinPred> Forl find_end(Forl firstl. Forl lastl.

For2 first2, For2 last2. BinPred pred);

В случае неудачного поиска возвращается lastl.

for_each

Алгоритм вызывает для каждого элемента последовательности заданную функцию:

tempiate<class In, class Function>

Function for_each(In first, In last, Function f);

Пример применения алгоритма приведен на с. 341.

348

Часть III. Стандартная библиотека

mismatch

Алгоритм mismatch ищет первую пару несовпадающих элементов двух последовательностей и возвращает итераторы на эту пару:

tempiate<class Inl, class In2>

pair<Inl, In2> mismatchdnl firstl, Inl lastl, In2 first2): template <class Inl, class In2, class BinPred> palr<Inl, In2> mismatchdnl firstl, Inl lastl, In2 first2, BinPred pred);

Длина второй последовательности считается большей или равной длине первой. Пользователь может задать предикат, определяющий, что считать несовпадением.

search, search_n

Алгоритм search находит первое вхождение в первую последовательность второй последовательности (с анализом предиката или без) и возвращает итератор на первый совпадающий элемент:

tempiate<class Forl, class For2>

Forl search(Forl firstl. Forl lastl, For2 first2. For2 last2); tempiate<class Forl, class For2, class BinPred> Forl search(Forl firstl, Forl lastl,

For2 first2. For2 last2. BinPred pred);

В случае неудачного поиска возвращается lastl.

Алгоритм searchjn находит в последовательности подпоследовательность, состоящую из по крайней мере п значений value (с анализом предиката или без) и возвращает итератор на первый совпадающий элемент:

tempiate<class For, class Size, class T>

For search_n(For first, For last,

Size count, const T& value);

template <class For, class Size, class T, class BinPred>

Forl search_n(For first, For last.

Size count, const T& value, BinPred pred);

Модифицирующие операции с последовательностями

Алгоритмы этой категории тем или иным образом изменяют последовательность, с которой они работают. Они используются для копирования, удаления, замены и изменения порядка следования элементов последовательности.