Comment copier un tableau en C++
-
Utilisez la fonction
copy()
pour copier un tableau en C++ -
Utilisez la fonction
copy_backward()
pour copier un tableau -
Utiliser la méthode
assign()
pour copier un tableau
Cet article présente la manière de copier un tableau en C++.
Utilisez la fonction copy()
pour copier un tableau en C++
La méthode copy()
est la méthode recommandée pour copier des structures basées sur des plages avec un seul appel de fonction. La méthode copy()
prend le premier et le dernier élément de la plage et le début du tableau de destination. Notez que vous pouvez obtenir un comportement indéfini si le troisième paramètre est dans la plage source.
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
using std::copy;
using std::cout;
using std::endl;
using std::string;
using std::vector;
int main() {
vector<string> str_vec = {"Warty", "Hoary", "Breezy",
"Dapper", "Edgy", "Feisty"};
vector<string> new_vec(str_vec.size());
copy(str_vec.begin(), str_vec.end(), new_vec.begin());
cout << "new_vec - | ";
copy(new_vec.begin(), new_vec.end(),
std::ostream_iterator<string>(cout, " | "));
cout << endl;
return EXIT_SUCCESS;
}
Production:
new_vec - | Warty | Hoary | Breezy | Dapper | Edgy | Feisty |
Utilisez la fonction copy_backward()
pour copier un tableau
La méthode copy_backward()
peut copier un tableau en ordre inverse avec l’élément original, mais l’ordre est préservé. Lorsque l’on copie les plages qui se chevauchent, il y a une règle empirique à respecter lorsqu’on utilise les méthodes std::copy
et std::copy_backward
: copy
est approprié lorsque l’on copie vers la gauche (le début de la plage de destination est en dehors de la plage source). En revanche, copy_backward
est approprié pour une copie vers la droite (la fin de la plage de destination est en dehors de la plage source).
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
using std::copy_backward;
using std::cout;
using std::endl;
using std::string;
using std::vector;
int main() {
vector<string> str_vec = {"Warty", "Hoary", "Breezy",
"Dapper", "Edgy", "Feisty"};
vector<string> new_vec(str_vec.size());
copy_backward(str_vec.begin(), str_vec.end(), new_vec.end());
cout << "new_vec - | ";
copy(new_vec.begin(), new_vec.end(),
std::ostream_iterator<string>(cout, " | "));
cout << endl;
return EXIT_SUCCESS;
}
Utiliser la méthode assign()
pour copier un tableau
assign()
est une méthode intégrée d’un conteneur vector
, qui remplace le contenu de l’objet vector
appelant par les éléments passés de la gamme. La méthode assign()
peut être utile pour copier les vecteurs de types qui peuvent être facilement convertis les uns aux autres. Dans l’exemple de code suivant, nous démontrons une façon de copier un vecteur char
dans le vecteur int
avec un seul appel assign
.
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<char> char_vec{'a', 'b', 'c', 'd', 'e'};
vector<int> new_vec(char_vec.size());
new_vec.assign(char_vec.begin(), char_vec.end());
cout << "new_vec - | ";
copy(new_vec.begin(), new_vec.end(), std::ostream_iterator<int>(cout, " | "));
cout << endl;
return EXIT_SUCCESS;
}
Production:
new_vec - | 97 | 98 | 99 | 100 | 101 |
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