Алгоритм generate_n()

Алгоритм generate_n()

template class OutputIterator,

class Size, class Generator

void

generate_n( OutputIterator first, Size n, Generator gen );

generate_n() заполняет последовательность, начиная с first, n раз вызывая gen, который может быть объектом-функцией или указателем на функцию.

#include algorithm

#include iostream.h

#include list

class even_by_twos {

public:

even_by_twos( int seed = 0 ) : _seed( seed ){}

int operator()() { return _seed += 2; }

private:

int _seed;

};

template class Type

void print_elements( Type elem ) { cout elem " "; }

int main()

{

list int, allocator ilist( 10 );

void (*pfi)( int ) = print_elements;

generate_n( ilist.begin(), ilist.size(), even_by_twos() );

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

// generate_n с even_by_twos():

// 2 4 6 8 10 12 14 16 18 20

cout "generate_n с even_by_twos(): ";

for_each( ilist.begin(), ilist.end(), pfi ); cout " ";

generate_n( ilist.begin(), ilist.size(), even_by_twos( 100 ) );

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

// generate_n с even_by_twos( 100 ):

// 102 104 106 108 110 112 114 116 118 120

cout "generate_n с even_by_twos( 100 ): ";

for_each( ilist.begin(), ilist.end(), pfi );

}