C++ · Avançado · Inglês · Técnico
ranges
Biblioteca do C++20 que trata intervalos como objetos e oferece algoritmos que aceitam contêineres inteiros, além de views preguiçosas encadeadas com o operador |.
Onde usar
Permite escrever filtros e transformações como pipeline, sem criar vetores intermediários. Também dispensa begin e end nos algoritmos.
Em código
auto par = [](int x) { return x % 2 == 0; };
auto qd = [](int x) { return x * x; };
std::vector<int> n{1, 2, 3, 4, 5, 6};
auto r = n | std::views::filter(par)
| std::views::transform(qd);
for (int x : r) std::cout << x << ' ';
// 4 16 36Exemplos
Use ranges to chain the filter and the transform.
Use ranges para encadear o filtro e a transformação.
The view is lazy, nothing is computed until we iterate.
A view é preguiçosa, nada é calculado até iterarmos.
Cuidado
Views não possuem os dados; se o contêiner de origem morrer ou for alterado, a view fica inválida.
Sinônimos
intervalos