Iterador de vectores en C++

Sheeraz Gul 12 octubre 2023
  1. Utilice los métodos begin() y end() para iterar sobre un vector en C++
  2. Utilice el método advance() para iterar sobre un vector en C++
  3. Utilice los métodos next() y prev() para iterar sobre un vector en C++
  4. Utilice el método inserter() para iterar sobre un vector en C++
Iterador de vectores en C++

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
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Artículo relacionado - C++ Vector