Wie druckt man den Inhalt eines Vektors in C++ aus
-
Verwendung von eine
for
-Schleife mit Elementzugriffsnotation zum Ausdrucken von Vektorinhalten - Verwenden Sie eine bereichsbasierte Schleife mit Elementzugriffsnotation, um Vektorinhalte auszudrucken
-
Verwendung von
std::copy
zum Ausdrucken von Vektor-Inhalten -
Verwendung von
std::for_each
zum Ausdrucken von Vektor-Inhalten
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;
}
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