Appliquer un vecteur à un autre en C++
-
Utiliser la fonction
insert
pour ajouter un vecteur à un autre vecteur en C++ -
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::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;
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