ExpertiDict

C++ · Essencial · Inglês · Técnico

range-based for

reɪndʒ beɪst fɔːrsubstantivo

Forma do for que percorre qualquer sequência com begin e end, como for (auto& x : v). Elimina o controle manual de índice ou iterador.

Onde usar

É a maneira padrão de iterar contêineres desde o C++11. Em code review, a pergunta é se o elemento deve ser copiado, referenciado ou referenciado como const.

Em código

std::vector<std::string> nomes{"Ana", "Rui"};
for (const auto& n : nomes) {
  std::cout << n << ' ';
}
for (auto& n : nomes) n += "!";

Exemplos

Use a range-based for with const auto& to avoid copies.

Use um range-based for com const auto& para evitar cópias.

This range-based for modifies the vector while iterating, which is dangerous.

Esse range-based for modifica o vector enquanto itera, o que é perigoso.

Cuidado

for (auto x : v) copia cada elemento, então prefira const auto& para objetos grandes.

Sinônimos

for por intervalo

Veja também

Todos os termos de C++