Lambdas e Algorithms
<algorithm> fornece operações prontas como std::sort que funcionam sobre o par de iterators begin()/end() de qualquer container, em vez de você escrever um loop de ordenação à mão.
main.cpp
Teste você mesmo →#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> numbers = {5, 2, 8, 1, 9};
sort(numbers.begin(), numbers.end());
for (int n : numbers) {
cout << n << " ";
}
cout << endl;
return 0;
}Output
1 2 5 8 9
Expressões lambda
Uma lambda, escrita [capture](params) { body }, é uma function anônima inline — a lista [capture] diz quais variáveis do ambiente ela pode ver. Combinada com um algorithm como std::find_if, uma lambda permite expressar uma condição personalizada sem escrever uma function nomeada separada só para aquele único uso.
main.cpp
Teste você mesmo →#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> numbers = {1, 2, 3, 4, 5};
int threshold = 3;
auto it = find_if(numbers.begin(), numbers.end(), [threshold](int n) {
return n > threshold;
});
if (it != numbers.end()) {
cout << "First number greater than " << threshold << " is " << *it << endl;
}
return 0;
}Output
First number greater than 3 is 4
A seguir: smart pointers — a alternativa moderna, baseada em RAII, a new e delete manuais.
Practice exercise
Dado vector<int> numbers = {1, 2, 3, 4}, construa um novo vector contendo cada número elevado ao quadrado, depois imprima todos eles separados por espaços.