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

  1. Verwenden Sie 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++

In diesem Artikel werden verschiedene Methoden erläutert, wie man in C++ einen Vektor an einen anderen Vektor anhängen kann.

Verwenden Sie 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::cout; using std::cin;
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::cout; using std::cin;
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::cout; using std::cin;
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::cout; using std::cin;
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;

Verwandter Artikel - C++ Vector

  • Prüfen ob Element in C++-Vektor vorhanden ist
  • Berechnen des Punktprodukts zweier Vektoren in C++