[C++]Size() von "laufzeitarray"

Legenbaer

Cadet 4th Year
Registriert
Juni 2006
Beiträge
108
Hmm...ob der Titel es trifft...naja..Hallo erstmal ;)

Habe folgendes:

std::vector<int>* toll = new std::vector<int>[max];

Also einen Pointer auf ein Array mit "max" Elementen, welches Pointer auf Vectoren speichert. Meine Frage ist nun...wie bekomme ich die Länge des Arrays heraus (max)?

toll->size() liefert ja nur die Länge des ersten Vectoren.
sizeof(toll) gibt mir ne 4 wegen der 32bit adresse.

Freue mich über Antworten :)

MfG
 
du baust ein array auf und musst dementsprechend auch über toll gehen

nebenbei angemerkt: wenn du einen vektor "baust" brauchst du davon kein array, außer du willst ein 2 dimensionales
 
Hmm...toll liefert mir ja nur einen Vector zurück. Dessen Länge brauch ich aber nicht.
Bezüglich dem 2D Arrays liegst du richtig ;) Wobei die eine Dimension Max ist und die andere bei jedem Vector anders.
Habe im Netz gerade das gefunden:

cout<<"groesse von array: "<< sizeof(array)/sizeof(array[0])<<"\n";

Allerdings habe ich keinen zugriff aufs Array. Entweder gibts da keinen ode rich kenne ihn nicht :|

MfG
 
Warum machst du denn ein Array und nicht einen Vector oder eine Liste von Vectoren? Wäre das nicht irgendwie "cooler"?

std::vector< std::vector<int> > toll;
 
Hatte ich auch schon. Aber ich hatte den Eindruck, dass das langsamer ist.

MfG
 
Du hast die Länge des Arrays in max. ;) Die musst Du dir selber merken. Eine andere standardkonforme und sinnvolle Möglichkeit dafür gibt es nicht.

Und, ich wüsste nicht, warum vector<vector<T> > langsamer sein sollte. Der vector merkt sich halt 3 Pointer im Gegensatz zu dem einen selbstgemerkten - das war's dann aber auch schon. Wenn der Compiler mit Optimierung am Werk war, sollte es da quasi keinen feststellbaren Geschwindigkeitsunterschied geben.
Und dem Eindruck, dass etwas langsamer geworden ist, sollte man nie trauen, es sei denn man hat es auch tatsächlich gemessen. ;) Und selbst wenn es eine tausendstel Sekunde langsamer ist, solltest du immer Wartbarkeit und sicherer Programmierung den Vorzug geben - Ausnahme wäre, diese tausendstel Sekunde schaukelt sich in irgendwelchen Schleifen zu einer Verlangsamung von Minuten oder Stunden auf.
 
Die lege ich schon fest....verdammt. :)
Jo also mir is der Fehler auch schon aufgefallen. Manchmal sieht man den Wald vor lauter....
:)
Aber trotzdem würde mich so im Nachhinein interessieren wie ich Information über das Array gewinnen kann. Nur so...für die Zukunft ^^

MfG & Danke
 
Hatte ich schon geschrieben ;) Geht nicht. Nicht allgemein, nicht mit einem vernünftigen Aufwand, nicht wenn du den Speicher nicht selbst beschafft hast. Und wenn du den Speicher selbst beschafft hast, hast du die Info schon. Oder einfach mit vector arbeiten.
 
Zurück
Oben