Cómo imprimir el contenido de un vector en C++

Jinku Hu 12 octubre 2023
  1. Utilice el bucle for con notación de acceso a elementos para imprimir contenidos vectoriales
  2. Usar el bucle basado en el rango con la notación de acceso al elemento para imprimir el contenido del vector
  3. Usa std::copy para imprimir el contenido del vector
  4. Usa std::for_each para imprimir los contenidos del vector
Cómo imprimir el contenido de un vector en C++

Este artículo presentará varios métodos sobre cómo imprimir el contenido de los vectores en C++.

Utilice el bucle for con notación de acceso a elementos para imprimir contenidos vectoriales

Se puede acceder a los elementos vector con el método at() o el operador []. En esta solución, demostramos ambos e imprimimos el contenido con el flujo cout. En primer lugar, inicializamos la variable vectorial con números enteros arbitrarios y luego hacemos un bucle a través de sus elementos
uno por uno para imprimir la corriente.

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

int main() {
  vector<int> int_vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  for (size_t i = 0; i < int_vec.size(); ++i) {
    cout << int_vec.at(i) << "; ";
  }
  cout << endl;

  for (size_t i = 0; i < int_vec.size(); ++i) {
    cout << int_vec[i] << "; ";
  }
  cout << endl;

  return EXIT_SUCCESS;
}

Resultado:

1; 2; 3; 4; 5; 6; 7; 8; 9; 10;
1; 2; 3; 4; 5; 6; 7; 8; 9; 10;

Usar el bucle basado en el rango con la notación de acceso al elemento para imprimir el contenido del vector

La solución anterior es relativamente sencilla, pero parece bastante verborreica. El C++ contemporáneo proporciona formas más flexibles de expresar las iteraciones, una de ellas es el bucle basado en el rango. Se considera más legible cuando los bucles hacen operaciones relativamente sin esfuerzo y no necesitan ser paralelizados.

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

int main() {
  vector<int> int_vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  for (const auto &item : int_vec) {
    cout << item << "; ";
  }
  cout << endl;

  return EXIT_SUCCESS;
}

Usa std::copy para imprimir el contenido del vector

Un método bastante avanzado para hacer la iteración de vectores y las operaciones de salida en una sola frase es llamar a la función copy, definida en la biblioteca <algorithm>. Este método toma un rango de vectores especificado con iteradores, y como tercer argumento, pasamos ostream_iterator para redirigir el contenido del rango al flujo cout.

#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>

using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::ostream_iterator;
using std::vector;

int main() {
  vector<int> int_vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  copy(int_vec.begin(), int_vec.end(), ostream_iterator<int>(cout, "; "));
  cout << endl;

  return EXIT_SUCCESS;
}

Usa std::for_each para imprimir los contenidos del vector

Otro algoritmo STL para hacer las operaciones de iteración y salida en una sola sentencia es for_each. Este método puede aplicar un determinado objeto de función a cada elemento del rango especificado, lo cual es una poderosa herramienta para tener. En este caso, pasamos la expresión lambda, que imprime los elementos al flujo de salida.

#include <algorithm>
#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::for_each;
using std::vector;

int main() {
  vector<int> int_vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  for_each(int_vec.begin(), int_vec.end(),
           [](const int& n) { cout << n << "; "; });
  cout << endl;

  return EXIT_SUCCESS;
}
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artículo relacionado - C++ Vector