Anzahl der Elemente mittels sizeof() ermitteln;
-
Swordfish schrieb:
Warum merkst du dir X und Y nicht einfach?
-
oh .. hehe.. war etwas langsam beim Schreiben...
ok.. aber ich würde trotzdem gerne wissen, ob es keine andere funktion gibt die die funktion von sizeof übernimmt ^^
aber danke für den tipp

-
Lösungsmöglichkeit für echte Masochisten:
Du könntest für dich festlegen, dass im c-tor jeder Pointer deines Arrays einen Wert ungleich 0 (null) bekommt - bis auf den letzten. Dann kannst du bei Bedarf immer wieder lustig Zählen, darfst jedoch den letzten Pointer logischerweise nicht verwenden.
Greetz, Swordfish
-
Es gibt so etwas nicht. Du kannst es, wenn du die Implementierung von new[] kennst selber bauen (s.u.), aber da das bei jedem Compilerhersteller unterschiedlich sein kann, wärst du dann an einen Compiler gebunden, ist also keine gute Idee.
Ein Beispiel:
Der Compiler könnte die Länge des Arrays in einem size_t-Bereich vor den eigentlichen Daten speichern (er brauch sie ja schließlich selber für den delete[]-Aufruf):template <typename T> size_t heap_sizeof_array (T* p) { return *(--reinterpret_cast<size_t*> (p)); }Aber wie gesagt, benutz das nicht, es ist nur ein Beispiel.
-
.filmor schrieb:
Der Compiler könnte die Länge des Arrays in einem size_t-Bereich vor den eigentlichen Daten speichern (er brauch sie ja schließlich selber für den delete[]-Aufruf)
Nö braucht er nicht, und schon gar nicht der Compiler. Wenn dann erledigt das die Bibliothek. Und diese Implementation wiederum ist vom Betriebssystem abhängig da so etwas vom Speichermanagement des Betriebssystems erledigt wird. Von daher ist das an und für sich Quark.
BR
Vinzenz
-
evilissimo schrieb:
und schon gar nicht der Compiler. Wenn dann erledigt das die Bibliothek.
Hast Recht, eine kleine Unachtsamkeit in der Wortwahl

evilissimo schrieb:
Und diese Implementation wiederum ist vom Betriebssystem abhängig da so etwas vom Speichermanagement des Betriebssystems erledigt wird.
Hmm, wenn das alles das Betriebsystem übernimmt, wieso brauch man dann zwei delete Varianten?! Das OS weiß doch gar nichts davon, ob das nun ein Array oder ein riesiges Objekt ist.
-
Wegen der Destruktoren (die müssen ja aufgerufen werden). Stimmt und genau deshalb muss die Bibliothek bei einem Array wissen wieviel Elemente es hat.
Tja nobody is perfekt
Alles weiß ich nun auch nicht 
BR
Vinzenz
-
whou.. danke für die zahlreichen tipps
bin aber kein masochist :p
lg Su Chen
-
Versuch's mal mit einem std::vector<std::vectorstd::string >. Damit kannst du die Göße per size() herraus finden.
mfg.
-
hmm.. das ist eine gute Idee!
habs auch schon damit gemacht

danke sehr
