cpp / intermediate
Snippet
In-Place Transformation von Array-Elementen
Die Verwendung von std::transform ermöglicht die prägnante Modifikation von Array-ähnlichen Containern, indem eine Funktion oder ein Lambda auf jedes Element in einem bestimmten Bereich angewendet wird.
snippet.cpp
cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>#include <vector>#include <algorithm>int main() {std::vector<int> numbers = {1, 2, 3, 4, 5};// Apply a square function to each element using std::transformstd::transform(numbers.begin(), numbers.end(), numbers.begin(), [](int n) {return n * n;});for (int n : numbers) std::cout << n << " ";return 0;}
Erklärung
1
std::transform(numbers.begin(), numbers.end(), numbers.begin(), ...
Liest vom Anfang bis zum Ende des Vektors und schreibt das Ergebnis zurück in dieselbe Startposition.
2
[](int n) { return n * n; }
Eine Lambda-Funktion, die die Logik für die Transformation definiert (Quadrieren der Eingabe).