sort( ivec.begin(), ivec.end(), greaterint() );

cout "последовательность элементов вектора после сортировки:\n";

copy( ivec.begin(), ivec.end(), ofile ); cout "\n\n";

typedef vector int, allocator ::iterator iter_ivec;

pair iter_ivec, iter_ivec ivec_iter;

ivec_iter = equal_range( ivec.begin(), ivec.end(), 26,

greaterint() );

cout "результат equal_range при поиске значения 26:\n\t"

"*ivec_iter.first: " *ivec_iter.first "\t"

"*ivec_iter.second: " *ivec_iter.second

"\n\n";

ivec_iter = equal_range( ivec.begin(), ivec.end(), 21,

greaterint() );

cout "результат equal_range при поиске отсутствующего значения 21:\n\t"

"*ivec_iter.first: " *ivec_iter.first "\t"

"*ivec_iter.second: " *ivec_iter.second

"\n\n";

}

<p>Алгоритм fill()</p>

template class ForwardIterator, class Type

void

fill( ForwardIterator first,

ForwardIterator last, const Type& value );

fill() помещает копию значения value в каждый элемент диапазона, ограниченного парой итераторов [first,last).

#include algorithm

#include list

#include string

#include iostream.h

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

исходная последовательность элементов массива:

0 1 1 2 3 5 8

массив после fill(ia+1,ia+6):

0 9 9 9 9 9 8

исходная последовательность элементов списка:

c eiffel java ada perl

список после fill(++ibegin,--iend):

c c++ c++ c++ perl

*/

int main()

{

const int value = 9;

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

ostream_iterator int ofile( cout, " " );

cout "исходная последовательность элементов массива:\n";

copy( ia, ia+7, ofile ); cout "\n\n";

fill( ia+1, ia+6, value );

cout "массив после fill(ia+1,ia+6):\n";

copy( ia, ia+7, ofile ); cout "\n\n";

string the_lang( "c++" );

string langs[5] = { "c", "eiffel", "java", "ada", "perl" };

list string, allocator il( langs, langs+5 );

ostream_iterator string sofile( cout, " " );

cout "исходная последовательность элементов списка:\n";

copy( il.begin(), il.end(), sofile ); cout "\n\n";

typedef liststring,allocator ::iterator iterator;

iterator ibegin = il.begin(), iend = il.end();

fill( ++ibegin, --iend, the_lang );

cout "список после fill(++ibegin,--iend):\n";

copy( il.begin(), il.end(), sofile ); cout "\n\n";

}

<p>Алгоритм fill_n()</p>

template class ForwardIterator, class Size, class Type

void

fill_n( ForwardIterator first,

Size n, const Type& value );

fill_n() присваивает count элементам из диапазона [first,first+count) значение value.

#include algorithm

#include vector

#include string

#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;

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

Перейти на страницу:

Похожие книги