HOWTO · C++
Iterador de vectores en C++
Este tutorial demuestra cómo iterar sobre un vector en C++.
En esta página
Este tutorial demuestra cómo iterar sobre un vector en C++.
C++ proporciona muchos métodos para iterar sobre vectores. Estos métodos se denominan iteradores, que apuntan a las direcciones de memoria de los contenedores STL; este tutorial demuestra diferentes métodos para iterar sobre los vectores en C++.
Utilice los métodos begin() y end() para iterar sobre un vector en C++
El método begin() devuelve el punto de inicio de un contenedor y el end() devuelve el punto final del contenedor. Ambos métodos se pueden usar después de que el iterador muestre o use el valor de un vector.
Ver el ejemplo:
#include <iostream>
#include <iterator>
#include <vector>
using namespace std;
int main() {
vector<char> DemoVector = {'d', 'e', 'l', 'f', 't', 's', 't', 'a', 'c', 'k'};
// Declare the iterator to a vector
vector<char>::iterator ptr;
// use begin() and end() to dispaly the members of the vector
cout << "The vector values are : ";
for (ptr = DemoVector.begin(); ptr < DemoVector.end(); ptr++)
cout << *ptr << " ";
return 0;
}
El código anterior mostrará los valores del vector usando los métodos iteradores begin() y end(). Ver la salida:
The vector Values are : d e l f t s t a c k
Utilice el método advance() para iterar sobre un vector en C++
El método advance() se usa para incrementar la posición del iterador hasta que se da un número particular en el argumento. Vamos a ver cómo funciona.
#include <iostream>
#include <iterator>
#include <vector>
using namespace std;
int main() {
vector<char> DemoVector = {'d', 'e', 'l', 'f', 't', 's', 't', 'a', 'c', 'k'};
// Declare the iterator to a vector
vector<char>::iterator ptr = DemoVector.begin();
// Use advance() to increment iterator position to 6th element
advance(ptr, 5);
cout << "The element after incrementing the iterator position is : ";
cout << *ptr << " ";
return 0;
}
El código anterior utilizará el método avanzado para incrementar la posición del iterador al sexto elemento s. Ver la salida:
The element after incrementing the iterator position is : s
Utilice los métodos next() y prev() para iterar sobre un vector en C++
El método next() se usa para devolver un nuevo iterador, y ese iterador apuntará después de avanzar las posiciones mencionadas en sus argumentos. De manera similar, el método prev() se usa para devolver un nuevo iterador, y ese iterador apuntará después de disminuir las posiciones mencionadas en sus argumentos.
Intentemos iterar sobre un vector usando los métodos siguiente y anterior.
#include <iostream>
#include <iterator>
#include <vector>
using namespace std;
int main() {
vector<char> DemoVector = {'d', 'e', 'l', 'f', 't', 's', 't', 'a', 'c', 'k'};
// Declaring iterators to a vector
vector<char>::iterator ptr = DemoVector.begin();
vector<char>::iterator ftr = DemoVector.end();
// Use next() method to return new iterator points to the 5th element
auto DemoIterator1 = next(ptr, 4);
// Use prev() method to return new iterator points to 4th element
auto DemoIterator2 = prev(ftr, 4);
// Display next iterator position
cout << "Element of new iterator using next() is : ";
cout << *DemoIterator1 << " ";
cout << endl;
// Display prev iterator position
cout << "Element of new iterator using prev() is : ";
cout << *DemoIterator2 << " ";
cout << endl;
return 0;
}
El código anterior itera sobre el vector usando los métodos next() y prev(). Ver la salida:
Element of new iterator using next() is : t
Element of new iterator using prev() is : t
Utilice el método inserter() para iterar sobre un vector en C++
Este método inserta elementos en el vector mientras itera sobre él. Este método toma dos parámetros, el primero es el contenedor y el otro es la posición donde se insertará el elemento.
Ahora probemos un ejemplo para insertar elementos en un vector mientras se itera.
#include <iostream>
#include <iterator>
#include <vector>
using namespace std;
int main() {
vector<char> DemoVector1 = {'d', 'e', 'l', 'f', 't', 's', 't', 'a', 'c', 'k'};
vector<char> DemoVector2 = {'.', 'c', 'o', 'm'};
// Declare iterator to a vector
vector<char>::iterator ptr = DemoVector1.begin();
// Use advance to set the position
advance(ptr, 10);
// copy 1 vector elements into other using inserter()
copy(DemoVector2.begin(), DemoVector2.end(), inserter(DemoVector1, ptr));
// Display the new vector elements
cout << "The new vector after insertion of elements is : ";
for (char &a : DemoVector1) cout << a << " ";
return 0;
}
El código anterior insertará el elemento de un vector en otro en una posición particular durante la iteración. Ver la salida:
The new vector after insertion of elements is : d e l f t s t a c k . c o m