Converti vettore in array in C++
-
Usa il metodo
data()
per convertire un vettore in un array -
Usa
&
l’indirizzo dell’operatore per convertire un vettore in un array -
Usa la funzione
copy()
per convertire un vettore in un array
Questo articolo introdurrà come convertire un vettore in un array in C++.
Usa il metodo data()
per convertire un vettore in un array
Poiché lo standard C++ garantisce che gli elementi del contenitore vettore
siano archiviati in modo contiguo in memoria, possiamo chiamare data
, un metodo vettoriale integrato, e assegnare l’indirizzo restituito al puntatore double
appena dichiarato, come mostrato nel seguente codice di esempio.
Nota che qualsiasi modifica agli elementi usando il puntatore d_arr
altererà gli elementi di dati del vettore originale perché stiamo semplicemente puntando agli elementi arr
ma non li copiamo in una nuova posizione.
#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;
}
Produzione:
-3.5; -21.1; -1.99; 0.129; 2.5; 3.111;
-3.5; -21.1; -1.99; 0.129; 2.5; 3.111;
Usa &
l’indirizzo dell’operatore per convertire un vettore in un array
In alternativa, possiamo usare l’operatore e commerciale, che prende l’indirizzo dell’oggetto in memoria e lo assegna a un puntatore appena dichiarato a un double
.
In questo esempio, stiamo prendendo l’indirizzo del primo elemento in vector
, ma puoi estrarre un puntatore a qualsiasi altro elemento ed eseguire le operazioni secondo necessità.
È possibile accedere agli elementi con la notazione di array d_arr[index]
e, analogamente al metodo precedente, qualsiasi modifica a d_arr
influisce sui dati di 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;
}
Usa la funzione copy()
per convertire un vettore in un array
Il metodo copy()
può essere utilizzato per convertire un vettore in un array double
in modo che gli elementi di dati vengano copiati in una diversa posizione di memoria. Successivamente, possiamo modificarli senza preoccuparci di alterare i dati originali del vector
.
Si noti che stiamo dichiarando un d_arr
con 6 elementi fissi, che è allocato come memoria dello stack. Nella maggior parte degli scenari, la dimensione di un array non sarà nota in anticipo, quindi sarà necessario utilizzare l’allocazione dinamica della memoria con metodi come new
o 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;
}
Produzione:
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