С++ для начинающих

       

Алгоритм 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 << "элементы в списке, первый вызов:\n";

           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 << "\n\nэлементы в списке, второй вызов:\n";

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

                 

           return 0;

}



Содержание раздела