C++ · Essencial · Inglês · Técnico
range-based for
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