std::vector<int> in int[] umwandeln [ERLEDIGT]
-
Blöde Frage mit Hoffnung auf eine schnelle Antwort:
Wie wandel ich denn am besten einen std::vector<int> in einen C-Style int[] um? Da steh ich gerade voll auf dem Schlauch
Danke, Jochen
-
Vermutlich musst du das gar nicht. Wozu glaubst du, diese Umwandlung zu benötigen?
-
MFK schrieb:
Vermutlich musst du das gar nicht. Wozu glaubst du, diese Umwandlung zu benötigen?
lib-call (C / CPP / Fortran mixed lib)
-
Na im Notfall kannste ja einfach ne Schleife machen...
const int size = Vector.size(); int i[size]; for(int a = 0; a < Vector.size(); a++) i[a] = Vector[a];
-
HEZ schrieb:
Na im Notfall kannste ja einfach ne Schleife machen...
const int size = Vector.size(); int i[size]; for(int a = 0; a < Vector.size(); a++) i[a] = Vector[a];
genau, aber das ist da genau das, was ich als "nicht am besten" empfinde.
vector speichert doch sicherlich intern ein Array ab, da muss man doch irgendwie hinkommen?
[Edit:] Ach ja, es geht um 400.000 Einträge
-
Gast221212 schrieb:
lib-call (C / CPP / Fortran mixed lib)
Das hilft jetzt recht wenig. Wie genau sieht die Funktion aus?
-
Gast221212 schrieb:
HEZ schrieb:
Na im Notfall kannste ja einfach ne Schleife machen...
const int size = Vector.size(); int i[size]; for(int a = 0; a < Vector.size(); a++) i[a] = Vector[a];
genau, aber das ist da genau das, was ich als "nicht am besten" empfinde.
vector speichert doch sicherlich intern ein Array ab, da muss man doch irgendwie hinkommen?
Das ist aber die sichere Methode. Sicher speichert ein vector sein Feld im Freispeicher ab, und selbst wenn du an den Zeiger kommst, ist das Array mit dem Tod des vectors futsch.
Wobei es *dann* aber sicher möglich sein sollte, den Zeiger mit Null zu entschärfen.
-
Morgen,
Gast221212 schrieb:
HEZ schrieb:
Na im Notfall kannste ja einfach ne Schleife machen...
const int size = Vector.size(); int i[size]; for(int a = 0; a < Vector.size(); a++) i[a] = Vector[a];
genau, aber das ist da genau das, was ich als "nicht am besten" empfinde.
vector speichert doch sicherlich intern ein Array ab, da muss man doch irgendwie hinkommen?
[Edit:] Ach ja, es geht um 400.000 Einträge
[edit]
Mittels &mvec[0]
[/edit]mfg
v R
-
MFK schrieb:
Gast221212 schrieb:
lib-call (C / CPP / Fortran mixed lib)
Das hilft jetzt recht wenig. Wie genau sieht die Funktion aus?
class Coord_Mat_double(int a, int b, int c, double* val, int* e, int* f);
Kann ich dem einfach einen Iterator geben?
-
Hallo,
falls die Funktion einen Pointer und einen Größenparameter erwartet kannst du einfach sowas schreiben:void f(int* arr, int size); int main() { vector<int> v; ... f(&v[0], v.size()); }
-
HumeSikkins schrieb:
Hallo,
falls die Funktion einen Pointer und einen Größenparameter erwartet kannst du einfach sowas schreiben:void f(int* arr, int size); int main() { vector<int> v; ... f(&v[0], v.size()); }
Danke, das ist es!