Stampa il contenuto di un vettore in C++

Jinku Hu 12 ottobre 2023
  1. Usa il cicli for con la notazione di accesso agli elementi per stampare i contenuti vettoriali
  2. Usa loop basato su intervallo con notazione di accesso agli elementi per stampare i contenuti vettoriali
  3. Usa std::copy per stampare il contenuto del vettore
  4. Usa std::for_each per stampare i contenuti vettoriali
Stampa il contenuto di un vettore in C++

Questo articolo introdurrà diversi metodi su come stampare i contenuti vettoriali in C++.

Usa il cicli for con la notazione di accesso agli elementi per stampare i contenuti vettoriali

È possibile accedere agli elementi vector con il metodo at() o con l’operatore []. In questa soluzione, mostriamo entrambi e stampiamo il contenuto con il flusso cout. Inizialmente, inizializziamo la variabile vettoriale con numeri interi arbitrari e quindi eseguiamo un bucle tra i suoi elementi uno per uno per stampare il flusso.

#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;
}

Produzione:

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

Usa loop basato su intervallo con notazione di accesso agli elementi per stampare i contenuti vettoriali

La soluzione precedente è relativamente semplice ma sembra piuttosto prolissa. Il C++ contemporaneo fornisce modi più flessibili per esprimere le iterazioni, una delle quali è il bucle basato su intervalli. È considerato più leggibile quando i cicli eseguono operazioni relativamente semplici e non devono essere parallelizzati.

#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 per stampare il contenuto del vettore

Un metodo piuttosto avanzato per eseguire l’iterazione vettoriale e le operazioni di output in un’istruzione è chiamare la funzione copia, definita nella libreria <algorithm>. Questo metodo accetta un intervallo vettoriale specificato con gli iteratori e come terzo argomento passiamo ostream_iterator per reindirizzare i contenuti dell’intervallo al flusso 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 per stampare i contenuti vettoriali

Un altro algoritmo STL per eseguire l’iterazione e le operazioni di output in una singola istruzione è for_each. Questo metodo può applicare un determinato oggetto funzione a ciascun elemento dell’intervallo specificato, che è uno strumento potente da avere. In questo caso, passiamo l’espressione lambda, che stampa gli elementi nel flusso di output.

#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;
}
Autore: 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

Articolo correlato - C++ Vector