000
25.12.2006, 23:53 Uhr
Drager
|
Hallo,
ich hab mal ne frage zu stl vector und der funktion read...
also ich dachte bisher immer , dass stl vector das gleiche ist wie ein array, nur mit noch ein paar funktionen... darum hab ich das bis jetzt auch genaus benutzt..
sprich ich gehe davon aus, dass der speicher immer an einem stück ist... nun meinte ein freund von mir, ich könne davon nicht ausgehn. da dies nicht in der spezifikation festgelegt sei, also mit nem anderen compiler schief gehn könnte.
also hab ich mal die stl beschreibung auf der homepage von sgi durchstöbert. hab aber keine echte antwort gefunden, zwar steht da oft : "linear oder aligned objects" aber ob der speicher wirklich am stück ist weiss ich nu auch net...
ich will nämlich folgendes machen:
C++: |
std::vector<Object> temp1(size - 1);
load.read((char*)&temp1[0],sizeof(Object) * (size - 1));
|
so das funktioniert zur zeit wunderbar, wäre es aber so wie mein freund behauptet, könnte das zu problemen führen... da der speicher ja nicht am stück gegeben sein muss.... (sondern vielleicht nur immer ein paar am stück und dann verkettet etc. etc.) ich nämlich keine lust, wie ich finde sinnloserweise lauter "push_backs" zu machen, obwohl ich weiss, dass ich jetzt einen speicher am stück beschreiben kann...
also weiss einer 100% wie das nun ist??
und dann hab ich heute was über "stl-valarrays" gelesen, geht das vielleicht damit??
sonst muss ich mir ja ne vector klasse schreiben, die den speicher am stück reserviert und die funktionalität von den std::vectoren hat...
danke
Drager |