Comment convertir un vecteur en tableau en C++
-
Utiliser la méthode
data()
pour convertir un vecteur en tableau -
Utiliser l’adresse de l’opérateur
&
pour convertir un vecteur en tableau -
Utilisez la fonction
copy()
pour convertir un vecteur en tableau
Cet article présente la manière de convertir un vecteur en un tableau en C++.
Utiliser la méthode data()
pour convertir un vecteur en tableau
Comme le standard C++ garantit que les éléments de conteneur vector
sont stockés de manière contiguë en mémoire, nous pouvons appeler la méthode data
, une méthode vectorielle intégrée, et attribuer l’adresse retournée au pointeur double
nouvellement déclaré, comme le montre l’exemple de code suivant.
Notez que toute modification des éléments utilisant le pointeur d_arr
modifiera les éléments de données du vecteur original, car nous ne faisons que pointer les éléments arr
sans les copier à un nouvel emplacement.
#include <iostream>
#include <iterator>
#include <vector>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<double> arr{-3.5, -21.1, -1.99, 0.129, 2.5, 3.111};
copy(arr.begin(), arr.end(), std::ostream_iterator<double>(cout, "; "));
cout << endl;
double *d_arr = arr.data();
for (size_t i = 0; i < arr.size(); ++i) {
cout << d_arr[i] << "; ";
}
cout << endl;
return EXIT_SUCCESS;
}
Production:
-3.5; -21.1; -1.99; 0.129; 2.5; 3.111;
-3.5; -21.1; -1.99; 0.129; 2.5; 3.111;
Utiliser l’adresse de l’opérateur &
pour convertir un vecteur en tableau
On peut aussi utiliser l’opérateur esperluette, qui prend l’adresse de l’objet dans la mémoire et l’assigne à un pointeur nouvellement déclaré vers un double
.
Dans cet exemple, nous prenons l’adresse du premier élément dans vector
, mais vous pouvez extraire un pointeur vers n’importe quel autre élément et faire les opérations nécessaires.
Les éléments peuvent être accessibles avec la notation d_arr[index]
array, et de façon similaire à la méthode précédente, toute modification de d_arr
affecte les données arr
.
#include <iostream>
#include <iterator>
#include <vector>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<double> arr{-3.5, -21.1, -1.99, 0.129, 2.5, 3.111};
copy(arr.begin(), arr.end(), std::ostream_iterator<double>(cout, "; "));
cout << endl;
double *d_arr = &arr[0];
for (size_t i = 0; i < arr.size(); ++i) {
cout << d_arr[i] << "; ";
}
cout << endl;
return EXIT_SUCCESS;
}
Utilisez la fonction copy()
pour convertir un vecteur en tableau
La méthode copy()
peut être utilisée pour convertir un vecteur en un tableau double
de sorte que les éléments de données soient copiés dans un emplacement mémoire différent. Plus tard, nous pouvons les modifier sans nous soucier de modifier les données vector
d’origine.
Notez que nous déclarons un d_arr
avec 6 éléments fixes, qui est alloué comme mémoire de pile. Dans la plupart des scénarios, la taille d’un tableau ne sera pas connue à l’avance, donc vous devrez utiliser l’allocation dynamique de mémoire avec des méthodes comme new
ou malloc
.
#include <iostream>
#include <iterator>
#include <vector>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<double> arr{-3.5, -21.1, -1.99, 0.129, 2.5, 3.111};
copy(arr.begin(), arr.end(), std::ostream_iterator<double>(cout, "; "));
cout << endl;
double d_arr[6];
copy(arr.begin(), arr.end(), d_arr);
for (size_t i = 0; i < arr.size(); ++i) {
cout << d_arr[i] << "; ";
}
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