En este tutorial, aprenderemos sobre los bucles for de rango de C ++ y sus mejores prácticas con la ayuda de ejemplos.
C ++ 11 introdujo el for
bucle a distancia . Este for
bucle se usa específicamente con colecciones como matrices y vectores .
Por ejemplo,
// initialize an int array int num(3) = (1, 2, 3); // use of ranged for loop for (int var : num) ( // code )
Aquí, el for
ciclo de rango itera la matriz num desde el principio hasta el final. La int
variable var almacena el valor del elemento de la matriz en cada iteración.
Su sintaxis es,
for (rangeDeclaration : rangeExpression) ( // code )
En el ejemplo anterior,
- rangeDeclaration -
int var
- rangeExpression - num

Ejemplo 1: rango para bucle usando matriz
#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; )
Salida
1 2 3 4 5
En este ejemplo, int
declaramos e inicializamos una matriz denominada numArray. Aquí, usamos el for
ciclo de rango para imprimir los elementos de numArray.
- primera iteración : n toma el valor del primer miembro de la matriz, que es
1
- segunda iteración - n toma el valor de
2
y luego se imprime y así sucesivamente.
Nota: El bucle for ranged itera automáticamente la matriz desde el principio hasta el final. No es necesario especificar el número de iteraciones en el ciclo.
Ejemplo 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; )
Salida
1 2 3 4 5
Ejemplo 3: declarar colección dentro del bucle
#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; )
Salida
1 2 3 4 5
Aquí, hemos declarado la colección dentro del bucle en sí, es decir
rangeExpression = (1, 2, 3, 4, 5)
Esta también es una forma válida de usar el for
bucle de rango , y funciona de la misma manera que cuando usamos una matriz o vector real.
C ++ clasificado para las mejores prácticas de bucle
En los ejemplos anteriores, hemos declarado una variable en el for
ciclo para almacenar cada elemento de la colección en cada iteración.
int num(3) = (1, 2, 3); // copy elements of num to var for (int var : num) ( // code )
Sin embargo, es mejor escribir el bucle for basado en rangos como este:
// access memory location of elements of num for (int &var : num) ( // code )
Observe el uso de &
antes de var. Aquí,
int var : num
- Copia cada elemento de num a la variable var en cada iteración. Esto no es bueno para la memoria de la computadora.int &var : num
- No copia cada elemento de num a var. En cambio, accede a los elementos de num directamente desde el propio num. Esto es más eficiente.
Nota: El &
operador se conoce como operador de referencia. Aprenderemos más sobre esto en los punteros de C ++.

Nota: Si no estamos modificando la matriz / vector / colección dentro del ciclo, es mejor usar la const
palabra clave en la declaración de rango.
// collection is not modified in the loop for (const int &var : num) ( // code )