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::copyzum Ausdrucken von Vektor-Inhalten -
Verwendung von
std::for_eachzum 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