capypad
0 Tage Serie
cpp / beginner
Snippet

Lambda-Ausdrücke

Lambda-Ausdrücke erzeugen anonyme Funktionen direkt im Code. Die Syntax [] erfasst Variablen, () enthält Parameter und {} enthält den Funktionskörper. Lambdas sind nützlich für kurze Operationen, besonders mit Algorithmen wie std::for_each und std::count_if. Die Erfassungsliste [threshold] übergibt eine Variable aus dem äußeren Bereich in das Lambda.

snippet.cpp
cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <vector>
#include <algorithm>
 
int main() {
std::vector<int> nums = {5, 2, 8, 1, 9};
auto print = [](int n) { std::cout << n << " "; };
std::cout << "Original: ";
std::for_each(nums.begin(), nums.end(), print);
std::cout << std::endl;
int threshold = 5;
auto isLarge = [threshold](int n) { return n > threshold; };
int count = std::count_if(nums.begin(), nums.end(), isLarge);
std::cout << "Numbers > " << threshold << ": " << count << std::endl;
return 0;
}
Erklärung
1
auto print = [](int n) { ... };
Erstellt ein Lambda, das ein int nimmt und es ausgibt
2
std::for_each(nums.begin(), nums.end(), print);
Wendet das Lambda auf jedes Element im Bereich an
3
[threshold]
Erfasst threshold nach Wert aus dem umgebenden Bereich
4
std::count_if(..., isLarge)
Zählt Elemente, die die Lambda-Bedingung erfüllen