Neste tutorial, aprenderemos sobre os loops for variados em C ++ e suas melhores práticas com a ajuda de exemplos.
C ++ 11 introduziu o for
loop variado . Este for
loop é usado especificamente com coleções como matrizes e vetores .
Por exemplo,
// initialize an int array int num(3) = (1, 2, 3); // use of ranged for loop for (int var : num) ( // code )
Aqui, o for
loop variado itera a matriz num do início ao fim. A int
variável var armazena o valor do elemento do array em cada iteração.
Sua sintaxe é,
for (rangeDeclaration : rangeExpression) ( // code )
No exemplo acima,
- rangeDeclaration -
int var
- rangeExpression - num

Exemplo 1: Ranged for Loop using Array
#include using namespace std; int main() ( // initialize array int numArray() = (1, 2, 3, 4, 5); // use of ranged for loop to print array elements for (int n : numArray) ( cout << n << " "; ) return 0; )
Resultado
1 2 3 4 5
Neste exemplo, declaramos e inicializamos uma int
matriz chamada numArray. Aqui, usamos o for
loop variado para imprimir os elementos de numArray.
- primeira iteração - n pega o valor do primeiro membro da matriz, que é
1
- segunda iteração - n obtém o valor de
2
e é então impresso e assim por diante.
Nota: O loop for ranged itera automaticamente a matriz do início ao fim. Não precisamos especificar o número de iterações no loop.
Exemplo 2: C ++ Ranged for Loop Usando Vector
#include #include using namespace std; int main() ( // declare and initialize vector vector num_vector = (1, 2, 3, 4, 5); // print vector elements for (int n : num_vector) ( cout << n << " "; ) return 0; )
Resultado
1 2 3 4 5
Exemplo 3: Declare a coleção dentro do loop
#include using namespace std; int main() ( // define the collection in the loop itself for (int n : (1, 2, 3, 4, 5)) ( cout << n << " "; ) return 0; )
Resultado
1 2 3 4 5
Aqui, declaramos a coleção dentro do próprio loop, ou seja,
rangeExpression = (1, 2, 3, 4, 5)
Essa também é uma maneira válida de usar o for
loop com variação e funciona da mesma forma que quando usamos uma matriz ou vetor real.
C ++ Ranged for Loop Best Practices
Nos exemplos acima, declaramos uma variável no for
loop para armazenar cada elemento da coleção em cada iteração.
int num(3) = (1, 2, 3); // copy elements of num to var for (int var : num) ( // code )
No entanto, é melhor escrever o loop for baseado em alcance como este:
// access memory location of elements of num for (int &var : num) ( // code )
Observe o uso de &
before var. Aqui,
int var : num
- Copia cada elemento de num para a variável var em cada iteração. Isso não é bom para a memória do computador.int &var : num
- Não copia cada elemento de num para var. Em vez disso, acessa os elementos de num diretamente do próprio num. Isso é mais eficiente.
Observação: o &
operador é conhecido como operador de referência. Aprenderemos mais sobre isso em ponteiros C ++.

Nota: Se não estivermos modificando a matriz / vetor / coleção dentro do loop, é melhor usar a const
palavra - chave na declaração de intervalo.
// collection is not modified in the loop for (const int &var : num) ( // code )