Vector daten als block auslesen
-
Hi,
ich will daten mit einer C-funktion als speicherblock (char* oder void*) speichern, will mir aber den loop und vorallem das zwischenspeichern sparen.
Gibt es eine möglichkeit direkt den vektor als speicherbereich zu übergeben?Beispiel:
std:vector hans; size_t hansgroesse = hans.size(); write(location, &hans, sizeof(hansgroesse) );gibt es eine vergleichbare möglichkeit, denn so wies da steht wird wohl nicht gehen oder?
bei std:string benutz ich für solche fälle immer die std::string::c_str() funktion.danke für jeden tipp
Marcel
-
Hallo,
das geht hier mittels '&hans[0]'
mfg
v R
-
Irgendwo hab ich mal gelesen, das der Speicher von Vector immer (fast immer),
zusammenhängend im Speicher steht.
So könnte es dann auch sein, das man mit vec::begin und vec::end diesen
bereich bekommen könnte, falls der vec<T>::iterator ein T* ist.
Dann könnte man den Iterator nach T* casten, und hätte dann ja
mit begin() den Anfang, und mit end() das Ende. Und dazwischen die Daten.
Es wäre ein Möglichkeit, ka ob sie Funktioniert, du wirst es ausprobieren müssen. :p
-
virtuell Realisticer schrieb:
Hallo,
das geht hier mittels '&hans[0]'
mfg
v Rhm, gab der op[] nicht eine Kopie zurück ?
Falls ja, klappts evtl. mit GetAt.
-
phlox81 schrieb:
Irgendwo hab ich mal gelesen, das der Speicher von Vector immer (fast immer),
zusammenhängend im Speicher steht.Soweit mir bekannt ist, ist dieser Umstand als TR bereits in den Standard
aufgenommen worden.mfg
v R
-
phlox81 schrieb:
virtuell Realisticer schrieb:
Hallo,
das geht hier mittels '&hans[0]'
mfg
v Rhm, gab der op[] nicht eine Kopie zurück ?
Falls ja, klappts evtl. mit GetAt.Ne, warum sollte er denn eine Kopie zurueckgeben? Kannst doch auch
hans[0] = foobar;schreiben, wenn du magst.
mfg
v R