Recorrer un vector en C ++

Recorrer un vector en C ++
Recorrer un vector significa acceder a todos los elementos del vector desde el principio hasta el final, o desde el final hasta el principio. Se puede acceder a los elementos para leer o escribir (cambiar de valor) o ambos.

En C ++, el vector se puede recorrer utilizando el clásico for-loop con el subíndice (índice) en los soportes cuadrados. Se puede recorrer mediante el uso de la condición basada en el rango. Se puede recorrer utilizando la función for_each () incluida en la biblioteca de algoritmo.

Contenido del artículo

- Bucle usando el clásico for-loop

- Bucle utilizando el estatamiento basado en la gama

- Bucle usando la función for_each ()

- Conclusión

Bucle usando el clásico for-loop

Subíndice

Considere el siguiente segmento de código:

vector vtr = 'a', 'b', 'c', 'd', 'e';
char ch = vtr [2];
cout << ch << endl;

La salida es 'C'. En la segunda declaración, después del nombre de vector, VTR, son los soportes cuadrados. Dentro de los soportes cuadrados está el índice, que también es el subíndice de vectores. El conteo de índice comienza desde cero. El índice en el código es 2, que devuelve el tercer elemento del vector.

Bucle con subíndice

Para bucle con un subíndice o iterador, el bucle se debe utilizar. El bucle while-bucle o do-while también se puede usar, pero el bucle for-loop es más conveniente. La sintaxis de un bucle for-loop es:

para (civil_state; while_condition; next/anterior)
//declaraciones

Bucle hacia adelante

El siguiente programa utiliza un bucle for-bour hacia adelante, un vector de caracteres (chars), por subíndice:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

vector vtr = 'a', 'b', 'c', 'd', 'e';
para (int i = 0; ichar ch = vtr [i];
cout << ch << ";

cout << endl;
regresar 0;

La salida es:

A B C D E

La biblioteca vectorial debe incluirse para que se use la clase vectorial. En la función principal de C ++, después de la creación del vector es el for-bucle. Este for-bucle se puede resumir de la siguiente manera: lea cada elemento del vector a partir del índice, 0; Y aunque aún no se ha alcanzado el final del vector, aumente el índice en 1 para leer el siguiente elemento.

Las paréntesis del bucle for-bucle tienen la lógica de qué leer a continuación, mientras que el bloque del for-loop hace la lectura e impresión en la terminal (consola).

Recorrer hacia adelante y omitir

En el bucle anterior, la siguiente declaración entre paréntesis es yo++. Esto es lo mismo que:

i = i + 1

Con esto, los elementos se leen uno tras otro en la dirección hacia adelante. Para leer cualquier otro elemento (omitir un elemento cada vez), el siguiente argumento entre paréntesis tiene que ser

i = i + 2; que es lo mismo que i+= 2;

El siguiente código lee cualquier otro personaje:

vector vtr = 'a', 'b', 'c', 'd', 'e';
para (int i = 0; ichar ch = vtr [i];
cout << ch << ";

cout << endl;

La salida es:

AS
omitir 'b' y 'd'.

Bucle

El siguiente código utiliza un bucle for-bour al revés, un vector de caracteres (chars):

int main ()

vector vtr = 'a', 'b', 'c', 'd', 'e';
para (int i = vtr.tamaño ()-1; ichar ch = vtr [i];
cout << ch << ";

cout << endl;
regresar 0;

La salida es:

E D C B A

El bucle comienza desde el índice más alto (4), que está dado por:

VTR.tamaño ()-1

En este caso, la función de miembro del vector, size () devuelve 5. 1 debe ser restado de él para obtener el índice más alto de 4 (el conteo de índice comienza a partir de 0). Para recurrir al revés, la declaración anterior entre paréntesis, ahora es "i-".

Bucle hacia atrás y saltando

En el bucle anterior, la declaración anterior es I-. Esto es lo mismo que:

i = i - 1

Con esto, los elementos se leen uno tras otro en la dirección inversa. Para leer cualquier otro elemento (omitir un elemento cada vez) al revés, la declaración anterior debe ser

i = i - 2; que es lo mismo que i- = 2;

El siguiente código lee cualquier otro personaje, al revés:

vector vtr = 'a', 'b', 'c', 'd', 'e';
para (int i = vtr.tamaño ()-1; ichar ch = vtr [i];
cout << ch << ";

cout << endl;

La salida es:

E C A

omitir 'd' y 'b'.

Bucle usando una clase de iterador

Un vector se puede recorrer con un iterador. Hay seis clases de iterador vectorial. Solo se usan dos aquí. Los nombres de los dos son: iterator y reverse_iterator. En las ilustraciones aquí, el bucle de for-box todavía se usa como bucle.

Un iterador es un puntero elaborado. Para cada iterador, hay una clase desde la cual se pueden instanciar objetos. El objeto instanciado es el iterador.

Bucle hacia adelante

El siguiente programa utiliza un bucle for-bour hacia adelante, un vector de caracteres (chars), por iterador:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

vector vtr = 'a', 'b', 'c', 'd', 'e';
vector:: iterator iter = vtr.comenzar();
para (iter = iter; iterchar ch = *iter;
cout << ch << ";

cout << endl;
regresar 0;

La salida es:

A B C D E

Observe cómo se ha declarado el objeto iterador,. El vector tiene la función miembro Begin (). Esto devuelve un iterador que apunta al primer elemento del vector. Hay otra función miembro, end () para el vector. Esto devuelve un iterador que apunta justo después del último elemento del vector. El iterador devuelto por end () es muy compatible con el iterador devuelto por begin (). De hecho, son del mismo tipo, iterador.

En las paréntesis, el estado inicial es:

iter = iter;

El medio de que el operando izquierdo, iter, debe comenzar el escaneo desde donde el operando derecho, iter está apuntando a.

Este for-bucle con los iteradores se puede resumir de la siguiente manera: lea cada elemento del vector que comienza desde el punto que indica; Y aunque aún no se ha alcanzado el final del vector, incrementa el iterador, Iter, apuntará al siguiente elemento para leer el siguiente elemento.

El cuerpo del bucle es:

char ch = *iter;
cout << ch << ";

El asterisco en esta posición es un operador de indirección. Obtiene el valor apuntado a, por el iterador

Recorrer hacia adelante y saltar con iterador

En el bucle anterior, el siguiente argumento es, Iter++. Esto es lo mismo que:

iter = iter + 1

Más-one con el iterador, significa apuntar al siguiente elemento. No significa, agregue el entero 1, al iterador. Con esto, los elementos se leen uno tras otro en la dirección hacia adelante. Para leer cualquier otro elemento (omitir un elemento cada vez), el siguiente argumento debe ser

iter = iter + 2; que es lo mismo que Iter+= 2;

El siguiente código lee cualquier otro personaje:

vector vtr = 'a', 'b', 'c', 'd', 'e';
vector:: iterator iter = vtr.comenzar();
para (iter = iter; iterchar ch = *iter;
cout << ch << ";

cout << endl;

La salida es:

AS

omitir 'b' y 'd'.

Bucle

El siguiente código utiliza un bucle for-bour al revés, un vector de caracteres (chars), usando iteradores:

int main ()

vector vtr = 'a', 'b', 'c', 'd', 'e';
vector:: reverse_iterator iter = vtr.rbegin ();
para (iter = iter; iterchar ch = *iter;
cout << ch << ";

cout << endl;
regresar 0;

La salida es:

E D C B A

El reverse_iterator se ha utilizado aquí. El vector tiene una función miembro correspondiente, rbegin (), que devuelve un iterador que apunta al último elemento del vector. Hay otra función de miembro, rend (), que devuelve un iterador que apunta justo antes del primer elemento del vector.

Para recurrir al revés, la declaración anterior entre paréntesis, todavía es irónicamente, "Iter ++". Y la condición de tiempo, todavía irónicamente 'ha'<'.

Bucle hacia atrás y saltando

En el bucle anterior, la declaración anterior es, iter++. Esto es lo mismo que

iter = iter + 1

Con esto, los elementos se leen uno tras otro en la dirección inversa. Para leer cada elemento de pedido (omitir un elemento cada vez) al revés, la declaración anterior debe ser

iter = iter + 2; que es lo mismo que Iter+= 2;

El siguiente código lee cualquier otro personaje al revés:

vector vtr = 'a', 'b', 'c', 'd', 'e';
vector:: reverse_iterator iter = vtr.rbegin ();
para (iter = iter; iterchar ch = *iter;
cout << ch << ";

cout << endl;

La salida es:

E C A

omitir 'd' y 'b'.

Bucle utilizando el estatamiento basado en la gama

El estado de condición basado en el rango es una declaración más conveniente para usar para recorrer una lista, como un vector. Realmente no se usa para omitir o recorrer hacia atrás. La sintaxis es:

Para la declaración (Declaración de Declaración de Range-Range-Declaration: Init-Estatement-optional

Esta vez, hay dos declaraciones entre paréntesis y no tres. La primera declaración es la declaración de una variable que contiene el siguiente elemento en el vector. Esta variable debe ser del mismo tipo que el tipo de elementos vectoriales. El segundo argumento después del colon es el nombre del vector.

El siguiente código muestra cómo se puede usar:

vector vtr = 'a', 'b', 'c', 'd', 'e';
para (char ch: vtr)
cout << ch << ";

cout << endl;

La salida es:

A B C D E

Bucle usando la función for_each ()

La función for_each () se usa desde la biblioteca de algoritmo incluida. La sintaxis es:

plantilla
función constexpr for_each (inputiterator primero, inputiterator último, función f);

El primer argumento es un iterador que apunta al primer elemento del vector. El segundo argumento es un iterador que apunta justo después del último elemento del vector. El tercer argumento es el nombre de una función, cuyo cuerpo es lo que sería en el clásico for-bucle. Esta función tiene un parámetro, y es la declaración de la variable la que contendría el siguiente valor del vector. Tiene que ser del mismo tipo que cada elemento en el vector. Esta función for_each () no se usa realmente para omitir o enrollar hacia atrás.

El siguiente programa muestra cómo usar la llamada de función for_each () y una definición de función asociada:

#incluir
#incluir
#incluir
usando el espacio de nombres STD;
vacío func (char ch)
cout << ch << ";

int main ()

vector vtr = 'a', 'b', 'c', 'd', 'e';
for_each (VTR.begin (), VTR.end (), func);
cout << endl;
regresar 0;

La salida es:

A B C D E

Conclusión

Recorrer un vector, significa acceder a todos los elementos del vector, desde el principio hasta el final o desde el final hasta el principio. Se puede acceder a los elementos para leer o escribir (cambiar de valor) o ambos.

En C ++, el vector se puede recorrer, utilizando el clásico for-loop, con el subíndice (índice) en los soportes cuadrados; Se puede recorrer mediante el uso de la condición de rango; También se puede recorrer utilizando la función for_each () incluida en la biblioteca de algoritmo.