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