CArray
-
Hallo @ll,
kann mir jemand erklären wie man CArray verwendet?
Ich lege mein CArray so an:CArray<CString,CString> meinarray;
Nun ist meine Frage, welchen Vorteil mir dieses
CArray gegenüber einem "normalen" Array bietet."The array grows one element at a time."
Das ist mit klar. Ist doch das gleich als würde ich
schreiben:CString test[0]="valueof0"; CString test[1]="valueof1";
Was macht das CArray so besonders? Als Anfänger leuchtet mir
sowas noch nicht so wirklich ein. Ist es lediglich, dass es
dynamisch hochzählt?
Und wozu muss ich eigentlich zwei Datentypen angeben bei dem CArray?
Welche Auswirkung hat das?
-
tetrithenoob schrieb:
CArray gegenüber einem "normalen" Array bietet.
Was ist denn bei Dir ein "normales" array? etwas
CString array[10]; !?tetrithenoob schrieb:
"The array grows one element at a time." Das ist mit klar.
Vermutlich nicht... Du kannst einfach neue Elemente reinstopfen (mit Add) ohne ein neues Array anzulegen.
tetrithenoob schrieb:
Und wozu muss ich eigentlich zwei Datentypen angeben bei dem CArray?
Du musst es nicht und du kannst auch die Doku lesen...
-
Schau mal bei dynamischer Arrayerweiterung (Speicherplatzreservierung). Wirst du mit einem "normalen" Array nicht so elegant hinbekommen. Mag wohl auch funktioneiren mit realloc, aber naja.....
codeman
-
Dann ist also u.a. die Funktionalität des "dynamischen" anhängen
und auslesen mittels z.B. .Add der große Vorteil, wenn ich das
jetzt richtig verstehe.Ich habe zwar hier etwas in der MSDN dazu gefunden, aber als Laie
bin ich leider (oder Gott sei Dank) auch auf dieses Forum angewiesen.Darum auch die Frage warum ich TYPE und ARG_TYPE angeben muss.
Muss doch beides immer gleich sein, oder? Also z.B. int,int oder
CString,CString. Was wird dort geprüft? Ob mein mit .Add zugefügtes
Element 1. vom Typ CString ist und 2. auch wirklich ein gültiger CString-
Wert darin vorhanden ist??
-
Na hier steht es doch:
TYPE
Template parameter specifying the type of objects stored in the array. TYPE is a parameter that is returned by CArrayType den du in dem Array speichern willst und der dir von dem Array zurückgegen wird.
ARG_TYPE
Template parameter specifying the argument type used to access objects stored in the array. Often a reference to TYPE. ARG_TYPE is a parameter that is passed to CArray.Argumenten Type wie das CArray auf seine in dem Array gespeicherten Objekte zugreift. Sprich du kannst z.B. einen int als Type speichern, aber du willst das nur als Referenz (int * Arg_Type) darauf zu gegriffen werden kann.
The CArray class supports arrays that are are similar to C arrays, but can dynamically shrink and grow as necessary.
Sagt dir doch wo der unterschied liegt. Änlich wie C Arrays, nur das es dynamisch erweiterbar und verkleinerbar ist. Ist schon ein entscheidender unterschied zu einem C Array.
-
Damit hast du mir sehr geholfen. Ich habe diese Beschreibung selbst nirgends
gefundenGuten Rutsch und many thx!
-
tetrithenoob schrieb:
Ich habe diese Beschreibung selbst nirgends
gefundenHmmmm in google CArray eingeben und auf den ersten oder zweiten Link klicken...
http://msdn.microsoft.com/library/en-us/vclib/html/_MFC_CArray.aspHab gar nicht gewusst, dass das so schwer ist
-
harharhar,
mpffffff, :p hehehehe
Na wenns hilft, dann hilfts
-
Jochen Kalmbach schrieb:
tetrithenoob schrieb:
Ich habe diese Beschreibung selbst nirgends
gefundenHmmmm in google CArray eingeben und auf den ersten oder zweiten Link klicken...
http://msdn.microsoft.com/library/en-us/vclib/html/_MFC_CArray.aspHab gar nicht gewusst, dass das so schwer ist
Heute schlechte Laune was? Naja, hat ja nicht jeder zu Weihnachten was bekommen!