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

1 ... 379 380 381 [ 382 ] 383 384 385 ... 395


template< class ForwardIteratorl, class ForwardIterator2 > ForwardIterator

search( ForwardIteratorl firstl, ForwardIteratorl lastl,

ForwardIterator2 first2, ForwardIterator2 last2 );

template< class ForwardIteratorl, class ForwardIterator2,

class BinaryPredicate > ForwardIterator

search( ForwardIteratorl firstl, ForwardIteratorl lastl, ForwardIterator2 first2, ForwardIterator2 last2,

BinaryPredicate pred );

Если даны два диапазона, то search() возвращает итератор, указывающий на первую позицию в диапазоне [first1,last1), начиная с которой второй диапазон входит как подпоследовательность. Если подпоследовательность не найдена, возвращается lastl. Например, в слове Mississippi подпоследовательность iss встречается дважды:, и search() возвращает итератор, указывающий на начало первого вхождения. В первом варианте для сравнения элементов используется оператор равенства, во втором -

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

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

Ожидаем найти подстроку ate: a t e Ожидаем найти подстроку vat: v a t

int main()

ostream iterator< char > ofile( cout, );

char str[ 25 ] = a fine and private place ; char substr[] = ate ;

char *found str = search(str,str+25,substr,substr+3);

cout << Ожидаем найти подстроку ate: ; copy( found str, found str+3, ofile ); cout << \n;

iter

vector< char, allocator > vec( str, str+24 ) vector< char, allocator > subvec(3);

subvec[0]=v; subvec[1]=a; subvec[2]=t;

vector< char, allocator >::iterator iter; = search( vec.begin(), vec.end(),

subvec.begin(), subvec.end(),

eal to< char >() );

cout << Ожидаем найти подстроку vat: ; copy( iter, iter+3, ofile ); cout << \n;

указанная программистом операция сравнения.



template< class ForwardIterator, class Size, class Type > ForwardIterator

search n( ForwardIterator first, ForwardIterator last,

Size count, const Type &value );

template< class ForwardIterator, class Size,

class Type, class BinaryPredicate > ForwardIterator

search n( ForwardIterator first, ForwardIterator last,

Алгоритм search n()

Size count, const Type &value, BinaryPredicate pred );

search n() ищет в последовательности [first,last) подпоследовательность, состоящую из count повторений значения value. Если она не найдена, возвращается last. Например, для поиска подстроки ss в строке Mississippi следует задать value равным s, а count равн1м 2. Если же нужно найти две расположенные подряд подстроки ssi, то value задается равным ssi , а count снова 2. search n() возвращает итератор на первый элемент со значением value. В первом варианте для сравнения элементов используется оператор равенства, во втором - указанная программистом операция сравнения.



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

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

Ожидаем найти два вхождения o: o o Ожидаем найти подстроку mou: m o u

int main()

ostream iterator< char > ofile( cout, );

const char blank = ; const char oh = o;

char str[ 26 ] = oh my a mouse ate a moose ; char *found str = search n( str, str+25, 2, oh );

cout << Ожидаем найти два вхождения o: ; copy( found str, found str+2, ofile ); cout << \n;

vector< char, allocator > vec( str, str+25 );

/ / найти первую последовательность из трех стволов, ни один из котор не равен пробелу: mou of mouse

vector< char, allocator >::iterator iter; iter = search n( vec.begin(), vec.end(),

blank, not eal to< char >() );

cout << Ожидаем найти подстроку mou: ; copy( iter, iter+3, ofile ); cout << \n;

template< class InputIteratorl, class InputIterator2,

class OutputIterator > OutputIterator

set difference( InputIteratorl firstl, InputIteratorl lastl, InputIterator2 first2, InputIterator2 last2, OutputIterator result );

terator2,

template< class InputIteratorl, class InputIte

class OutputIterator, class Compare OutputIterator

set difference( InputIteratorl firstl, InputIteratorl lastl, InputIterator2 first2, InputIterator2 last2,

Алгоритм set difference()

OutputIterator result, Compare comp );

set difference() строит отсортированную последовательность из элементов, имеющихся в первой последовательности [firstl,lastl) , но отсутствующих во второй - [first2,last2) . Например, разность последовательностей {0,1,2,3} и



1 ... 379 380 381 [ 382 ] 383 384 385 ... 395

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