ExpertiDict

C++ · Avançado · Inglês · Técnico

ranges

ˈɹeɪn.dʒɪzsubstantivo

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 36

Exemplos

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

Veja também

Todos os termos de C++