Appliquer un vecteur à un autre en C++

  1. Utiliser la fonction insert pour ajouter un vecteur à un autre vecteur en C++
  2. Utiliser la fonction insert pour ajouter des éléments dans un vecteur en C++

Cet article explique plusieurs méthodes pour ajouter un vecteur à un autre vecteur en C++.

Utiliser la fonction insert pour ajouter un vecteur à un autre vecteur en C++

La méthode d’insertion est une fonction intégrée du conteneur std::vector qui peut ajouter plusieurs éléments aux objets vector. Comme premier exemple, nous montrons comment ajouter une plage donnée d’un vecteur à un autre. Si nous spécifions trois itérateurs comme arguments, la fonction insert ajoutera les éléments de la plage des deux derniers arguments avant que l’itérateur ne passe comme premier paramètre. Puisque nous passons l’itérateur end du premier objet vector dans l’exemple de code suivant, la fonction fait essentiellement l’ajout de deux vecteurs.

#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;
}

Production :

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;

Alternativement, nous pouvons spécifier les itérateurs en utilisant les méthodes std::end/std::begin, en implémentant une façon plus générique de passer des arguments à la fonction insert :

#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;
}

Utiliser la fonction insert pour ajouter des éléments dans un vecteur en C++

Une autre façon courante d’utiliser la méthode insert consiste à ajouter au vecteur une série d’éléments ayant une valeur donnée. Par exemple, nous pouvons insérer des zéros aux 4 premières positions de l’entier vecteur. Notez que le premier argument est la position de l’élément avant laquelle les éléments sont ajoutés. La méthode insert peut être utilisée même si les éléments vecteur sont alloués manuellement en utilisant un new appel ;

#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;
}

Production :

i_vec1           : 12; 32; 43; 53; 23; 65; 84;
i_vec1 (inserted): 0; 0; 0; 0; 12; 32; 43; 53; 23; 65; 84;

La méthode insert peut également être appliquée lorsque deux vecteurs de chaînes de caractères doivent être concaténés. L’exemple suivant démontre le cas donné avec presque la même syntaxe que celle utilisée avec les vecteurs d’entiers.

#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;
}

Production :

doordash; dribble; renode; xilinx; airbus; sikorsky;

Article connexe - C++ Vector

  • Ajouter un élément au vecteur de paires en C++
  • Initialiser le vecteur de structures en C++