Appliquer un vecteur à un autre en C++

Jinku Hu 12 octobre 2023
  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++
Appliquer un vecteur à un autre 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::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;
}

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

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

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

Production :

doordash; dribble; renode; xilinx; airbus; sikorsky;
Auteur: 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

Article connexe - C++ Vector