Wie druckt man den Inhalt eines Vektors in C++ aus

Jinku Hu 12 Oktober 2023
  1. Verwendung von eine for-Schleife mit Elementzugriffsnotation zum Ausdrucken von Vektorinhalten
  2. Verwenden Sie eine bereichsbasierte Schleife mit Elementzugriffsnotation, um Vektorinhalte auszudrucken
  3. Verwendung von std::copy zum Ausdrucken von Vektor-Inhalten
  4. Verwendung von std::for_each zum Ausdrucken von Vektor-Inhalten
Wie druckt man den Inhalt eines Vektors in C++ aus

Dieser Artikel stellt verschiedene Methoden vor, wie Vektorinhalte in C++ ausgedruckt werden können.

Verwendung von eine for-Schleife mit Elementzugriffsnotation zum Ausdrucken von Vektorinhalten

Auf Vector-Elemente kann mit der Methode at() oder dem Operator [] zugegriffen werden. In dieser Lösung demonstrieren wir beide und drucken den Inhalt mit dem cout-Stream aus. Zuerst initialisieren wir die Vektorvariable mit beliebigen ganzen Zahlen und schleifen dann durch ihre Elemente
einer nach dem anderen, um den Stream auszudrucken.

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

Ausgabe:

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

Verwenden Sie eine bereichsbasierte Schleife mit Elementzugriffsnotation, um Vektorinhalte auszudrucken

Die bisherige Lösung ist relativ einfach, sieht aber recht wortreich aus. Zeitgenössisches C++ bietet flexiblere Möglichkeiten, Iterationen auszudrücken, eine davon ist die bereichsbasierte Schleife. Sie gilt als besser lesbar, wenn Schleifen relativ mühelose Operationen durchführen und nicht parallelisiert werden müssen.

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

Verwendung von std::copy zum Ausdrucken von Vektor-Inhalten

Eine ziemlich fortgeschrittene Methode, die Vektoriteration und Ausgabeoperationen in einer Anweisung durchzuführen, ist der Aufruf der Funktion copy, die in der <algorithm> Bibliothek definiert ist. Diese Methode nimmt einen mit Iteratoren spezifizierten Vektorbereich, und als drittes Argument übergeben wir ostream_iterator, um den Inhalt des Bereichs in den cout-Strom umzuleiten.

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

Verwendung von std::for_each zum Ausdrucken von Vektor-Inhalten

Ein weiterer STL-Algorithmus für die Durchführung der Iteration und Ausgabeoperationen in einer einzigen Anweisung ist for_each. Diese Methode kann ein bestimmtes Funktionsobjekt auf jedes Element des angegebenen Bereichs anwenden, was ein mächtiges Werkzeug ist. In diesem Fall übergeben wir den Ausdruck lambda, der die Elemente in den Ausgabestrom druckt.

#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

Verwandter Artikel - C++ Vector