Алгоритм 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; |
}