С++ для начинающих


Алгоритм find_first_of()


template< class ForwardIterator1, class ForwardIterator2 >

ForwardIterator1

find_first_of( ForwardIterator1 first1, ForwardIterator1 last1,

               ForwardIterator2 first2, ForwardIterator2 last2 );

template< class ForwardIterator1, class ForwardIterator2,

          class BinaryPredicate >

ForwardIterator1

find_first_of( ForwardIterator1 first1, ForwardIterator1 last1,

               ForwardIterator2 first2, ForwardIterator2 last2,

               BinaryPredicate pred );

Последовательность, ограниченная парой [first2,last2), содержит элементы, поиск которых ведется в последовательности, ограниченной итераторами [first1,last1). Допустим, нужно найти первую гласную в последовательности символов synesthesia. Для этого определим вторую последовательность как aeiou. find_first_of() возвращает итератор, указывающий на первое вхождение любого элемента последовательности гласных букв, в данном случае e. Если же первая последовательность не содержит ни одного элемента из второй, то возвращается last1. В первом варианте используется оператор равенства, определенный для типа элементов контейнера, а во втором – бинарный предикат pred.

#include <algorithm>

#include <vector>



#include <string>

#include <iostream.h>

int main()

{

           string s_array[] = { "Ee", "eE", "ee", "Oo", "oo", "ee" };

           // возвращает первое вхождение "ee" -- &s_array[2]

           string to_find[] = { "oo", "gg", "ee" };

                 

           string *found_it =

        find_first_of( s_array, s_array+6,

                               to_find, to_find+3 );

           // печатается:

           // найдено: ee

           //        &s_array[2]:    0x7fff2dac

           //        &found_it:      0x7fff2dac

           if ( found_it != &s_array[6] )

              cout << "найдено: "      << *found_it     << "\n\t"



Содержание раздела