Iteradores
Una forma de iterar sobre elementos en
contenedores (estructuras de datos) es el
iterador (
iterator code>), que vienen en varios tipos.
Iterador - estructura de datos que « indica» ; en algún elemento contenedor y (para algunos contenedores) puede navegar al elemento anterior/siguiente.
El vector utiliza el más poderoso - iterador de acceso aleatorio(Iterador de acceso aleatorio
). Un iterador de acceso aleatorio puede acceder a un elemento arbitrario del vector además del movimiento secuencial.
Los beneficios de los iteradores
1) Al eliminar elementos e iterar sobre elementos usando índices ([]
), debemos realizar un seguimiento de la cantidad de elementos restantes todo el tiempo para no ir más allá del vector, y al usar un iterador, usted puede usar end()< /code> indicando el final del vector.
2) Con un iterador, puede eliminar e insertar fácilmente elementos de forma dinámica en un vector.
Declaración de iterador
1) Declarar un iterador para un vector entero y apuntarlo al primer elemento en el vector.
vector <int> mivector = { 1, 2, 3, 4, 5 };
vector <int>::iterator it = myvector.begin();
2) Declarar un iterador para un vector entero y apuntarlo al elemento después del último en el vector.
vector <int> mivector = { 1, 2, 3, 4, 5 };
vector <int>::iterator it = myvector.end(); // apunta al elemento después del último,
vector <int>::iterator it1 = myvector.end() - 1 ; // apuntando al último elemento.
Obtener y mostrar un valor
Obtener y mostrar el elemento señalado por el iterador.
cout << *eso;
Mover la posición del iterador
Mueva la posición del iterador 3 posiciones hacia adelante.
avanzar(it, 3);
Crear un nuevo iterador a partir de uno existente
Cree un nuevo iterador basado en uno existente, avanzando 3 posiciones.
automático it1 = siguiente(it, 3);
Mostrar valores vectoriales usando un iterador
vector<int>::iterador it;
for (it = myvector.begin(); it != myvector.end(); ++it) {
cout<<*it<<" ";
}
Recorrido vectorial
Para recorrer el vector desde el último elemento hasta el primero, se utiliza un iterador inverso reverse_iterator
, se obtiene mediante:
1) rbegin() - devuelve un iterador inverso que apunta al último elemento del vector, la aplicación de la operación ++
conduce a la transición al elemento anterior;
2) rend()
- devuelve un iterador inverso que apunta al elemento anterior del vector, la aplicación de la operación ++ conduce a la transición al siguiente
vector<int>::reverse_iterator it = myvector.rbegin(); // apunta al último elemento
vector<int>::reverse_iterator it = myvector.rend(); // apunta a un elemento,
// que viene antes del primero,