Funcții Lambda

O funcție lambda (C++11) este o funcție anonimă definită "pe loc". Utilă pentru algoritmi STL sau callback-uri rapide.

lambda.cpp
#include <algorithm>
#include <vector>
using namespace std;

int main() {
  vector<int> v = {5, 2, 8, 1, 9, 3};

  // Lambda ca comparator pentru sortare descrescătoare
  sort(v.begin(), v.end(), [](int a, int b) {
    return a > b;
  });

  for (int x : v) cout << x << " ";
  // 9 8 5 3 2 1
  return 0;
}

Sintaxa lambda

// [captură](parametri) -> tip_retur { corp }

auto saluta = []() { cout << "Salut!" << endl; };
saluta();  // Salut!

auto aduna = [](int a, int b) { return a + b; };
cout << aduna(3, 4) << endl;  // 7

// Captură de variabile din scope
int n = 10;
auto addN = [n](int x) { return x + n; };
cout << addN(5) << endl;  // 15