Anhängen einen Vektor an einen Vektor in C++

Jinku Hu 12 Oktober 2023
  1. Verwendung von die Funktion insert zum Anhängen von Vektor an Vektor in C++
  2. Verwenden der Funktion insert zum Hinzufügen von Elementen in Vektoren in C++
Anhängen einen Vektor an einen Vektor 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;
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