Microsoft KB Archive/156079

= STL Sample for the Generate Function =

Article ID: 156079

Article Last Modified on 11/18/2003

-

APPLIES TO

 The Standard C++ Library, when used with:  Microsoft Visual C++ 4.2 Enterprise Edition

 Microsoft Visual C++ 4.2 Professional Edition 

-



This article was previously published under Q156079



SUMMARY
The sample code below illustrates how to use the generate STL function in Visual C++.



Prototype
template inline Function for_each(InputIterator first,                     InputIterator last,                      Function F) template<class ForwardIterator, class Generator> inline void generate(ForwardIterator first, ForwardIterator last, Generator gen) NOTE: The class/parameter names in the prototype do not match the version in the header file. Some have been modified to improve readability.

Description
The Generate algorithm traverses the range [first, last + 1), assigning to each element the value returned by gen. Generate modifies the elements in the specified range.

Sample Code
////////////////////////////////////////////////////////////////////// // // Compile options needed: /GX // // generate.cpp : Illustrates how to use the generate function. // // Functions: // //  generate - Fill a sequence using a generator function //  Fibonacci - return the next Fibonacci number in the //              Fibonacci series. // // Written by Kalindi Sanghrajka // of Microsoft Product Support Services, // Software Core Developer Support. // Copyright (c) 1996 Microsoft Corporation. All rights reserved. ////////////////////////////////////////////////////////////////////// // disable warning C4786: symbol greater than 255 character, // okay to ignore using namespace std; // return the next Fibonacci number in the // Fibonacci series. int Fibonacci(void) {   static int r;    static int f1 = 0; static int f2 = 1; r = f1 + f2 ; f1 = f2 ; f2 = r ; return f1 ; } void main {   const int VECTOR_SIZE = 8 ; // Define a template class vector of integers typedef vector<int, allocator > IntVector ; //Define an iterator for template class vector of integer typedef IntVector::iterator IntVectorIt ; IntVector Numbers(VECTOR_SIZE) ;  //vector containing numbers IntVectorIt start, end, it ; start = Numbers.begin ;  // location of first // element of Numbers end = Numbers.end ;      // one past the location // last element of Numbers // fill the range [first, last +1) with a series of   // Fibonnaci numbers using the Fibonacci function    generate(start, end, Fibonacci) ;    // print content of Numbers    cout << "Numbers { " ;    for(it = start; it != end; it++)        cout << *it << " " ;    cout << " }\n" << endl ; } Program Output is:
 * 1) pragma warning(disable: 4786)
 * 2) include
 * 3) include
 * 4) include

Numbers { 1 1 2 3 5 8 13 21 }

<div class="references_section">