Wie man Vektor in Array in C++ konvertiert
-
Verwenden Sie die Methode
data()
, um einen Vektor in ein Array zu konvertieren -
Verwenden Sie die
&
Adresse des Operators, um einen Vektor in ein Array zu konvertieren -
Verwenden Sie die Funktion
copy()
, um einen Vektor in ein Array zu konvertieren
Dieser Artikel führt ein, wie man einen Vektor in ein Array in C++ konvertiert.
Verwenden Sie die Methode data()
, um einen Vektor in ein Array zu konvertieren
Da der C++-Standard garantiert, dass vector
-Containerelemente zusammenhängend im Speicher abgelegt werden, können wir die Daten
, eine eingebaute Vektor-Methode, aufrufen und die zurückgegebene Adresse dem neu deklarierten double
zuweisen, wie im folgenden Code-Beispiel gezeigt wird.
Beachten Sie, daß jede Modifikation der Elemente unter Verwendung des d_arr
-Zeigers die Datenelemente des ursprünglichen Vektors verändert, da wir lediglich auf die arr
-Elemente zeigen, sie aber nicht an eine neue Stelle kopieren.
#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;
}
Ausgabe:
-3.5; -21.1; -1.99; 0.129; 2.5; 3.111;
-3.5; -21.1; -1.99; 0.129; 2.5; 3.111;
Verwenden Sie die &
Adresse des Operators, um einen Vektor in ein Array zu konvertieren
Alternativ können wir den Ampersand-Operator verwenden, der die Adresse des Objekts im Speicher nimmt und sie einem neu deklarierten Zeiger auf ein double
zuweist.
In diesem Beispiel nehmen wir die Adresse des ersten Elements in vector
, aber Sie können einen Zeiger auf jedes andere Element extrahieren und Operationen nach Bedarf durchführen.
Auf Elemente kann mit der Array-Notation d_arr[index]
zugegriffen werden, und ähnlich wie bei der vorherigen Methode wirken sich alle Änderungen an d_arr
auf arr
-Daten aus.
#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;
}
Verwenden Sie die Funktion copy()
, um einen Vektor in ein Array zu konvertieren
Die Methode copy()
kann verwendet werden, um einen Vektor in ein doppeltes
Array zu konvertieren, so dass Datenelemente an eine andere Speicherstelle kopiert werden. Später können wir sie modifizieren, ohne uns Gedanken über die Veränderung der ursprünglichen vector
-Daten machen zu müssen.
Beachten Sie, dass wir ein d_arr
mit festen 6 Elementen deklarieren, das als Stapelspeicher alloziert wird. In den meisten Szenarien ist die Größe eines Arrays nicht im Voraus bekannt, so dass Sie die dynamische Speicherzuweisung mit Methoden wie new
oder malloc
verwenden müssten.
#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;
}
Ausgabe:
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