auf T* von std::vector zugreifen
-
Hi
ist es möglich an das Array eines std::vector ranzukommen?
Also sowas:
std::vector<int> vec;
vec.push_back(2);
...
int* arr = vec.getPointer(); // ?
// arr[0] == 2
?
-
Ja.
int* arr = &(vec[0]);Wozu brauchst du sowas? Das ist nicht ungefährlich.
-
das braucht man ständig wenn man mit c-apis arbeitet
-
Braunstein schrieb:
Ja.
int* arr = &(vec[0]);Wozu brauchst du sowas? Das ist nicht ungefährlich.
Du kannst auf die Klammern verzichten, die sind hier unnötig:
int* arr = &vec[0];Sehr praktisch für die Kommunikation zwischen C-APIs und dem eigenen C++ Programm. So muss man nicht C-Arrays einsetzen und läuft keine Gefahr von Speicherlecks oder sonstiges. Zudem hat man gleich Kopiersemantik und die Iteratoren.
Aber sonst würde ich auch raten, dies eher zu meiden. Ausser es gibt wirklich einen trifftigen Grund.
Grüssli