Anhängen einen Vektor an einen Vektor in C++
-
Verwendung von die Funktion
insert
zum Anhängen von Vektor an Vektor in C++ -
Verwenden der Funktion
insert
zum Hinzufügen von Elementen in Vektoren in C++
In diesem Artikel werden verschiedene Methoden erläutert, wie man in C++ einen Vektor an einen anderen Vektor anhängen kann.
Verwendung von die Funktion insert
zum Anhängen von Vektor an Vektor in C++
Die Methode insert
ist eine eingebaute Funktion des Containers std::vector
, die mehrere Elemente an die Vector
-Objekte anhängen kann. Als erstes Beispiel zeigen wir, wie man einen gegebenen Bereich von einem Vektor
an einen anderen anhängt. Wenn wir drei Iteratoren als Argumente angeben, fügt die Funktion insert
Elemente aus dem Bereich der letzten beiden Argumente vor dem als ersten Parameter übergebenen Iterator hinzu. Da wir im folgenden Code-Beispiel den end
-Iterator des ersten Vektor
-Objekts übergeben, führt die Funktion im Wesentlichen das Anhängen von zwei Vektoren durch.
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
template <typename T>
void printVectorElements(vector<T> &vec) {
for (auto i = 0; i < vec.size(); ++i) {
cout << vec.at(i) << "; ";
}
cout << endl;
}
int main() {
vector<int> i_vec1 = {12, 32, 43, 53, 23, 65, 84};
vector<int> i_vec2 = {121, 321, 431, 531, 231, 651, 841};
cout << "i_vec1 : ";
printVectorElements(i_vec1);
i_vec1.insert(i_vec1.end(), i_vec2.begin(), i_vec2.end());
cout << "i_vec1 (inserted): ";
printVectorElements(i_vec1);
cout << endl;
return EXIT_SUCCESS;
}
Ausgabe:
i_vec1 : 12; 32; 43; 53; 23; 65; 84;
i_vec1 (inserted): 12; 32; 43; 53; 23; 65; 84; 121; 321; 431; 531; 231; 651; 841;
Alternativ können wir die Iteratoren mit den Methoden std::end
/std::begin
angeben und damit eine generischere Art der Übergabe von Argumenten an die insert
-Funktion implementieren:
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
template <typename T>
void printVectorElements(vector<T> &vec) {
for (auto i = 0; i < vec.size(); ++i) {
cout << vec.at(i) << "; ";
}
cout << endl;
}
int main() {
vector<int> i_vec1 = {12, 32, 43, 53, 23, 65, 84};
vector<int> i_vec2 = {121, 321, 431, 531, 231, 651, 841};
cout << "i_vec1 : ";
printVectorElements(i_vec1);
i_vec1.insert(std::end(i_vec1), std::begin(i_vec2), std::end(i_vec2));
cout << "i_vec1 (inserted): ";
printVectorElements(i_vec1);
cout << endl;
return EXIT_SUCCESS;
}
Verwenden der Funktion insert
zum Hinzufügen von Elementen in Vektoren in C++
Eine andere übliche Art, die Methode insert
zu verwenden, ist das Hinzufügen eines Bereichs von Elementen mit einem bestimmten Wert zum Vektor
. Zum Beispiel können wir Nullen an den ersten 4 Positionen des Integer-Vektors einfügen. Beachten Sie, dass das erste Argument die Position des Elements ist, vor dem die Elemente hinzugefügt werden. Die Methode insert
kann auch dann verwendet werden, wenn die Vektor
-Elemente manuell mit dem Aufruf new
zugewiesen werden;
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
template <typename T>
void printVectorElements(vector<T> &vec) {
for (auto i = 0; i < vec.size(); ++i) {
cout << vec.at(i) << "; ";
}
cout << endl;
}
int main() {
vector<int> i_vec1 = {12, 32, 43, 53, 23, 65, 84};
cout << "i_vec1 : ";
printVectorElements(i_vec1);
i_vec1.insert(i_vec1.begin(), 4, 0);
cout << "i_vec1 (inserted): ";
printVectorElements(i_vec1);
cout << endl;
return EXIT_SUCCESS;
}
Ausgabe:
i_vec1 : 12; 32; 43; 53; 23; 65; 84;
i_vec1 (inserted): 0; 0; 0; 0; 12; 32; 43; 53; 23; 65; 84;
Die Methode insert
kann auch angewendet werden, wenn zwei Vektoren mit Strings verkettet werden sollen. Das folgende Beispiel demonstriert den gegebenen Fall mit fast der gleichen Syntax, wie sie bei den Integer-Vektoren verwendet wird.
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
template <typename T>
void printVectorElements(vector<T> &vec) {
for (auto i = 0; i < vec.size(); ++i) {
cout << vec.at(i) << "; ";
}
cout << endl;
}
int main() {
vector<string> str_vec1 = {"doordash", "dribble", "renode", "xilinx"};
vector<string> str_vec2 = {"airbus", "sikorsky"};
str_vec1.insert(str_vec1.end(), str_vec2.begin(), str_vec2.end());
printVectorElements(str_vec1);
cout << endl;
return EXIT_SUCCESS;
}
Ausgabe:
doordash; dribble; renode; xilinx; airbus; sikorsky;
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