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

1 ... 359 360 361 [ 362 ] 363 364 365 ... 395


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

int main()

int ia[] = {29,23,20,22,17,15,26,51,19,12,35,40}; vector< int, allocator > vec( ia, ia+12 );

sort( &ia[0], &ia[12] ) ;

bool found it

bool found it = binary search( &ia[0], &ia[12], 18 ); assert( found it == false );

vector< int > vec( ia, ia+12 );

sort( vec.begin(), vec.end(), greater<int>() );

found it = binary search( vec.begin(), vec.end(),

26, greater<int>() );

assert( found it == true );

template < class InputIterator, class OutputIterator > OutputIterator

copy( InputIterator first1, InputIterator last,

Алгоритм copy()

OutputIterator first2 )

copy() копирует последовательность элементов, ограниченную парой итераторов [first,last) , в другой контейнер, начиная с позиции, на которую указывает first2. Алгоритм возвращает итератор, указывающий на элемент второго контейнера, следующий за последним вставленным. Например, если дана последовательность

int ia[] = {0, 1, 2, 3, 4, 5 };

сдвинуть элементы влево на од, получится {1,2,3,4,5,5}

{0,1,2,3,4,5}, мы можем сдвинуть элементы на один влево с помощью такого вызова:

copy( ia+1, ia+6, ia );

copy() начинает копирование со второго элемента ia, копируя 1 в первую позицию, и так далее, пока каждый элемент не окажется в позиции на одну левее исходной.



#include <algorithm>

#include <vector>

#include <iterator>

#include <iostream.h>

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

0 1 1 3 5 8 13

сдвиг массива влево на 1:

1 1 3 5 8 13 13

сдвиг вектора влево на 2: 1 3 5 8 13 8 13

int main()

int ia[] = { 0, 1, 1, 3, 5, 8, 13 }; vector< int, allocator > vec( ia, ia+7 ); ostream iterator< int > ofile( cout, );

cout << исходная последовательность элементов:\n ; copy( vec.begin(), vec.end(), ofile ); cout << \n;

сдвиг влево на один элемент copy( ia+1, ia+7, ia );

cout << сдвиг массива влево на 1:\n ; copy( ia, ia+7, ofile ); cout << \n;

сдвиг влево на два элемента copy( vec.begin()+2, vec.end(), vec.begin() );

cout << сдвиг вектора влево на 2:\n ; copy( vec.begin(), vec.end(), ofile ); cout << \n;

template < class BidirectionalIterator1,

class BidirectionalIterator2 > BidirectionalIterator2

copy backward( BidirectionalIterator1 first, BidirectionalIterator1 last1,

Алгоритм copy backward()

BidirectionalIterator2 last2 )

copy backward() ведет себя так же, как copy() , только элементы копируются в обратном порядке: копирование начинается с last1-1 и продолжается до first. Кроме того, элементы помещаются в целевой контейнер с конца, от позиции last2-1, пока не будет скопировано last1-first элементов.

Например, если дана последовательность {0,1,2,3,4,5}, мы можем скопировать последние три элемента (3,4,5) на место первых трех (0,1,2), установив first равным адресу значения 0, last1 - адресу значения 3, а last2 - адресу значения 5. Тогда



печатается:

исходн список строк: The light untonsured hair grained and hued like pale oak

после copy backward( begin+1, end-3, end ):

The light untonsured hair light untonsured hair grained

and hued

int main() {

string sa[] = {

The , light , untonsured , hair ,

grained , and , hued , like , pale , oak };

vector< string, allocator > svec( sa, sa+10 );

cout << исходн список строк:\n\t ;

for each( svec.begin(), svec.end(), print elements() );

cout << \n\n ;

copy backward( svec.begin()+1, svec.end()-3, svec.end() ); print elements::reset line cnt();

после copy backward( begin+1, end-3, end ):\n ; for each( svec.begin(), svec.end(), print elements() );

cout <<

for eac cout << \n ;

0. В результате получим последовательность {3,4,5,3,4,5}.

Алгоритм count()

элемент 5 попадает на место элемента 2, элемент 4 - на место 1, а элемент 3 - на место

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

class print elements { public:

void operator()( string elem ) { cout << elem

<< ( line cnt++%8 ? : \n\t );

static void reset line cnt() { line cnt = 1; }

private:

static int line cnt;

int print elements:: line cnt = 1;



1 ... 359 360 361 [ 362 ] 363 364 365 ... 395

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