Die Grenzen eines Vectors...
-
Hi,
kann ein vector eigentlich mehr als nur 32767 Einträge verwalten? Ich stehe nämlich grad vor dem Problem das ich ein Haufen Datensätze in einem CPtrArray (ist ein vector der Zeiger aufnehmen kann) eintragen muss. Und da sind 32767 Elemente viel zu wenig.
Logisch gesehen sind dürften nicht mehr als 32767 Einträge möglich sein z.B. die
.GetSize()
-Funktionen den Rückgabewert vom Typ int haben. Und der ist ja bekanntlich auf 32767 oder 65000 begrennzt.
Was kann man nun tun um eine größere Anzahl von Datensätzen zu verwalten?
Soll ich jetzt vieleicht ein int- Array bestehend aus (32767, oder 2*32767) int-Vairiablen machen um diese beschränkung zu umgehen?
-
Wie groß ist sizeof(int) bei dir?
-
int hat bei mir die Standardgröße wie auf jedem anderem 32 bit system. (4 Bytes)
-
Und wie kommst du dann darauf, das 32 Bit nur 32767 ist? Also bei mir sind 32 Bit über 4 Mrd. in Dezimal. Verwechselst du int nicht mit short bzw. unsigned short?
-
hm... stimmt ja. ich hab das dann wohl mit short int verwechselt....
-
Und somit müsste der Vector theoretisch grenzenlos sein.
-
wieso grenzenlos ?
-
DEvent schrieb:
wieso grenzenlos ?
theoretisch grenzenlos
-
artchi meinte wohl pratisch grenzenlos
-
DEvent schrieb:
wieso grenzenlos ?
Grenzenlos im Sinne von "Grenze im Normalfall praktisch unerreichbar".
-
DEvent schrieb:
wieso grenzenlos ?
Naja, du kannst ja mal 4 Mrd. (4.000.000.000) Elemente (sagen wir mal Strings) in einen Vector packen. Mal schauen was ein 4 GByte RAM ausgestatteter PC sagen würde? Du würdest die 4 Mrd. nicht mal annähernd erreichen.
Verstehste jetzt was ich damit sagen wollte?
Die anderen jedenfalls schon. Obwohl... ddddd hat schon recht: praktisch grenzenlos.
-
ist weder theo noch praktisch grenzenlos
-
doch, praktisch schon
-
DEvent schrieb:
ist weder theo noch praktisch grenzenlos
Wie willst du denn die Grenze erreichen? Selbst wenn du ein vector<char> machst, kann dein Prozessor gerade mal so viel Speicher adressieren, wie du Elemente haben kannst. Aber es gibt noch andere Dinge in deinem Programm, die Speicher fressen. Der Vector ist also nicht die Grenze, sondern der Prozessor. Für 64 Bit Prozessoren gilt das in gleicher Weise weil dort sizeof(std::size_t) == 8.
-
das meinte ich ja was optimizer sagt.
ach lassen wir das, führt ja doch zu nix...