Программирование >>  Инициализация объектов класса, структура 

1 ... 365 366 367 [ 368 ] 369 370 371 ... 395


template< class ForwardIterator1, class ForwardIterator2 > ForwardIterator1

find end( ForwardIterator1 first1, ForwardIterator1 last1,

ForwardIterator2 first2, ForwardIterator2 last2 );

template< class ForwardIterator1, class ForwardIterator2, class BinaryPredicate >

ForwardIterator1

find end( ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2,

Алгоритм find end()

BinaryPredicate pred );

В последовательности, ограниченной итераторами [first1,last1), ведется поиск последнего вхождения последовательности, ограниченной парой [first2,last2). Например, если первая последовательность - это Mississippi, а вторая - ss, то find end() возвращает итератор, указывающий на первую s во втором вхождении ss. Если вторая последовательность не входит в первую, то возвращается last1. В первом варианте используется оператор равенства, определенный для типа элементов контейнера, а во втором - бинарный предикат, переданный пользователем.



#include <algorithm> #include <vector> #include <iostream.h> #include <assert.h>

int main() {

int array[ 17 ] = { 7,3,3,7,6,5,8,7,2,1,3,7,6,3,8,4,3 };

int subarray[ 3 ] = { 3, 7, 6 };

int * found it;

find найти последнее вхождение последовательности 3,7,6 в массив и вернуть аес первого ее элемента ...

found it = find end( &array[0], &array[17], &subarray[0], &subarray[3] );

assert( found it == &array[10] );

vector< int, allocator > ivec( array, array+17 ); vector< int, allocator > subvec( subarray, subarray+3 ); vector< int, allocator >::iterator found it2;

found it2 = find end( ivec.begin(), ivec.end(), subvec.begin(), subvec.end(),

equal to<int>() );

assert( found it2 == ivec.begin()+10 );

cout << ok: find end правильно вернула начало

<< последнего вхождения последовательности: 3,7,6!\n ;

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,

Алгоритм find first of()

BinaryPredicate pred );

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



#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

<< &s array[2]:\t << &s array[2] << \n\t

<< &found it:\t << found it << \n\n ;

vector< string, allocator > svec( s array, s array+6); vector< string, allocator > svec find( to find, to find+2 );

возвращает вхождение oo - svec.end()-2 vector< string, allocator >::iterator found it2;

found it2 = find first of(

svec.begin(), svec.end(), svec find.begin(), svec find.end(), eal to<string> () );

печатает:

тоже найдено: oo

&svec.end()-2: 0x100067b0

&found it2: 0x100067b0

if ( found it2 != svec.end() )

cout << тоже найдено: << *found it2 << \n\t << &svec.end()-2:\t << svec.end()-2 << \n\t << &found it2:\t << found it2 << \n ;

контейнера, а во втором - бинарный предикат pred.

Алгоритм for each()

последовательности гласных букв, в данном случае e. Если же первая последовательность не содержит ни одного элемента из второй, то возвращается last1. В первом варианте используется оператор равенства, определенный для типа элементов



1 ... 365 366 367 [ 368 ] 369 370 371 ... 395

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика