Skip to content

Instantly share code, notes, and snippets.

@dazfuller
Created December 16, 2011 16:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dazfuller/1486620 to your computer and use it in GitHub Desktop.
Save dazfuller/1486620 to your computer and use it in GitHub Desktop.
Ignoring the Voices: C++11 Example - Lambda Parameters
#include <functional>
#include <iostream>
#include <vector>
#include <math.h>
using namespace std;
double Sum(const vector<double>& values, function<double (double x)> f)
{
double result = 0.0;
for (auto d : values)
{
result += f(d);
}
return result;
}
double Complex(double x)
{
double result = sin(x * 3.14159265);
result -= floor(result);
return result;
}
int main(int argc, char** argv)
{
vector<double> myValues = { 1.3, 2.1, 7.4, 9.6 };
double result1 = Sum(myValues, [](double x) { return x; });
double result2 = Sum(myValues, Complex);
cout << "Result 1 (lambda): " << result1 << endl;
cout << "Result 2 (function): " << result2 << endl;
}
@dazfuller
Copy link
Author

Compiled as follows with GCC 4.6.1 on Ubuntu 11.10

g++ -Wall -Werror -std=c++0x -o lambda_functions lambda_functions.cpp

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment