Array Größe ?
-
wie bekomme ich die Größe eines dynamisch angelegten Array. (Größe und Member Anzahl) ?
int *x = new int[54]; sizeof(x) // funktioniert nicht !danke
-
unmöglich!
-
Verwende doch statt dessen einfach std::vector. Der hat eine dynamische Speicherverwaltung und die Größe hast du mit vector::size() auch dabei.
-
Dieser Thread wurde von Moderator/in akari aus dem Forum VCL (C++ Builder) in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
geht nicht schrieb:
unmöglich!
Geht schon, nur nicht mit standard C++.
-
wie geht denn das?
-
Braunstein schrieb:
Verwende doch statt dessen einfach std::vector. Der hat eine dynamische Speicherverwaltung und die Größe hast du mit vector::size() auch dabei.
Habe ich mittlerweile schon gemacht. Wollte halt den Geschwindigkeitsvorteil nutzen.
Danke
nixischunmöglich schrieb:
geht nicht schrieb:
unmöglich!
Geht schon, nur nicht mit standard C++.
Tut mir leid das sagen zu müssen, aber so ne Aussage nützt niemand etwas. 'Herr Lehrer ich weiß was, sag es aber nicht oder wie ?
-
OldMan00 schrieb:
wie bekomme ich die Größe eines dynamisch angelegten Array. (Größe und Member Anzahl) ?
int *x = new int[54]; sizeof(x) // funktioniert nicht !danke
nix leichter als das:
int n = 54;
int *x = new int[n];int size_x = n*sizeof(int);
-
gut und schön, nützt aber nix
da ich über x daran kommen will.
ich hab jetzt vector genommen,
Danke
-
OldMan00 schrieb:
wie komme ich dann an die Anzahl der Eintrage ?
im Beispiel von lacher ist die Anzahl der Einträge 'n'
beim vector ist die Anzahl der Einträge über size() abrufbar.
-
OldMan00 schrieb:
nixischunmöglich schrieb:
geht nicht schrieb:
unmöglich!
Geht schon, nur nicht mit standard C++.
Tut mir leid das sagen zu müssen, aber so ne Aussage nützt niemand etwas. 'Herr Lehrer ich weiß was, sag es aber nicht oder wie ?
Mit "verwende std::vector" wurde deine Frage schon beantwortet.

-
Das ist mir schon klar

Das nützt mir aber nix. Ich möchte über x daran kommen, das ist ja das was ich will ! das andere ist völlig klar.
-
OldMan00 schrieb:
Ich möchte über x daran kommen, das ist ja das was ich will!
Das geht aber nicht. Die Variable x beinhaltet nur eine Adresse im Arbeitsspeicher, sonst nichts. Also musst du dir die Größe in einer anderen Variable merken, das macht std::vector auch so.
-
OK, es geht sogar mit standard C++. Du musst nur new überladen und dir zu jeder Adresse die Anzahl bytes für jede Adresse irgendwo merken und sie dann wieder von da abfragen.
-
das Problem ist(war), daß ich dieses Array in einer eigenen Klasse ( eigenen Header Datei) deklariert habe und einfach nicht so viele public Variablen benutzen will. Array deswegen, da es einfach schneller ist als vector.
Nun benutze ich vector und der Unterschied ist nur minimal bis gar nicht zu spüren wenn das array größer ist.
aber trotzdem vielen dank für die Antworten.
-
OldMan00 schrieb:
Array deswegen, da es einfach schneller ist als vector.
Bei was ist Array den schneller als std::vector?
-
Array deswegen, da es einfach schneller ist als vector.
Falsch, -100 Punkte.
-
vielleicht einfach mal testen

Die nächste Tabelle enthält die Laufzeiten für diese Anweisungen mit einem Array
und einem Vektor. In der Spalte mit „vector at“ wurde auf die Elemente des
Vektors mit at zugegriffen:
C++Builder 2007, Release Build
Auswahlsort n=10000Array.....vector [].....vector at
0,09 Sek..0,56 Sek......6,42 Sek.auch nachzulesen in:
C++ mit dem Borland C++Builder 2007
-
zeig mal den code dazu, oder gibts da keinen?
-
int max=10000; vector<int> a(Max); for (int i=0; i<=Max–2; i++) { int x,Min = i; for (int j=i+1; j<=Max–1; j++) if (a[j]<a[Min]) Min = j; x = a[i]; a[i] = a[Min]; a[Min] = x; }