Using Lambdas in C++: Listing 3

A Fibonacci generator functor.

// A Fibonacci generator functor
class GenerateFibonacci
  int penultimate_, last_;
  // Function object constructor.
  // penultimate_(0) initializes a private member
  // penultimate_ with 0, last_ with 1.
  GenerateFibonacci() : penultimate_(0), last_(1) {};
  int operator()();
    // in the Fibonacci series, every element is the sum of its two predecessors 
    int current = penultimate_ + last_;

    penultimate_ = last_;
    // current is returned, prior to be assigned to last_ for the next iteration
    return last_ = current;

// this C-like function prints odd parameters, skips even ones.
void printIfOdd(int n)
  if (n%2)
    cout << n << " is odd." << endl;

int main()
  // a list of 20 integers
  list<int> l(20);

  // the standard library generate() algorithm iterates from the beginning of the list
  // to its end, initializing each position with its corresponding Fibonacci series
  // element.
  generate(begin(l), end(l), GenerateFibonacci());

  // the for_each() standard library algorithm iterates through the list, printing its
  // odd elements (1, 3, 5, 13, 21, 55, ...)
  for_each(begin(l), end(l), printIfOdd);

  return 0;

About the Author

Diego Dagum is a software architect and developer with more than 20 years of experience. He can be reached at [email protected]

comments powered by Disqus


  • .NET Community Toolkit v8.0 Preview Revamps MVVM Library

    Microsoft announced the first preview of .NET Community Toolkit v8.0.0, which revamps the MVVM library and introduces a new GitHub repo to host the project.

  • Microsoft Details Native Integration of Elastic on Azure

    Microsoft detailed the native integration of Elastic tech with its Azure cloud computing platform, increasing application observability.

  • Java on Visual Studio Code Going Cloud Native

    Cloud-native development figures prominently in a new roadmap published by Microsoft's Java on Visual Studio Code dev team.

  • Speed Lines Graphic

    Quantum-Inspired Annealing Using C# or Python

    Dr. James McCaffrey of Microsoft Research explains a new idea that slightly modifies standard simulated annealing by borrowing ideas from quantum mechanics.

Upcoming Events