Алгоритм generate()

Алгоритм generate()

template class ForwardIterator, class Generator

void

generate( ForwardIterator first,

ForwardIterator last, Generator gen );

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

#include algorithm

#include list

#include iostream.h

int odd_by_twos() {

static int seed = -1;

return seed += 2;

}

template class Type

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

int main()

{

list int, allocator ilist( 10 );

void (*pfi)( int ) = print_elements;

generate( ilist.begin(), ilist.end(), odd_by_twos );

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

// элементы в списке, первый вызов:

// 1 3 5 7 9 11 13 15 17 19

cout "элементы в списке, первый вызов: ";

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

generate( ilist.begin(), ilist.end(), odd_by_twos );

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

// элементы в списке, второй вызов:

// 21 23 25 27 29 31 33 35 37 39

cout " элементы в списке, второй вызов: ";

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

return 0;

}