"Kleine" Anfängerfrage
-
Hallo
Ich beschäftige mich im Moment wirklich intensiv mit c++. Klassen usw. alles schön, aber wenn ich wirklich ein nützliches Programm schreiben will, stosse ich immer auf das gleiche Problem. Sagen wir mal ich definiere jetzt eine Klasse:
class Werte { public: string sEins; string sZwei; string sDrei; };
Also nix großes, aber für mein Programm brauch ich eine "Liste", die nur Variablen vom Typ Werte speichert, und zwar dynamisch. Ich hab schon viel gelesen und auch oft probiert das zu verstehen, aber es klappte nie.
Es gibt wohl auch vector oder so, aber ich wollte das lieber selbst schreiben können, um die Zusammenhänge endlich einmal wirklich zu verstehen.Schönen Dank
MFG
gertrude
-
Wo ist die Frage?
-
http://www.google.de/search?sourceid=navclient&hl=de&q=verkettete+liste
Eventuell das was Du haben magst.
-
Wie ich eine dynamische Liste/Array nur mit aus, deren Inhalt nur die Klasse Werte sein darf.
In etwa sowas hier:Werte Array[10000000];
Bloss eben dynamisch. Das ist meine Frage....
-
#include <vector> class Werte { public: string sEins; string sZwei; string sDrei; }; int main() { std::vector<Werte> WerteVektor; Werte Testwerte; WerteVektor.push_back(Testwerte); // einfügen return 0; }
-
cool so einfach xD. Danke sehr. Hat vielleicht jemand ne URL wo alle Funktionen von vector (suchen oder was weiss ich was es da alles gibt ;)) aufgelistet sind`?
-
Original erstellt von <gertrude>:
**
Es gibt wohl auch vector oder so, aber ich wollte das lieber selbst schreiben können, um die Zusammenhänge endlich einmal wirklich zu verstehen.**Original erstellt von <gertrude>:
Hat vielleicht jemand ne URL wo alle Funktionen von vector (suchen oder was weiss ich was es da alles gibt ;)) aufgelistet sind`?Also irgendwer ist hier unecht
-
-
Nein leider nich ;)....
Ich hab bloss die Schnauze voll und wenn das wirklich so einfach is, warum nich? xD
Das ist wahrscheinlich wirklich zu kompliziert als das das jemand ebenso posten könnte, nun ja vielleicht begreif ichs ja doch irgendwann
-
Falls du zur Laufzeit des Programms weißt, wie viele objekte brauchst, ist es einfach, das auf herkömmlich Weise (ohne std::vector) zu machen
Werte *pList; // Variable pList = new Werte[100]; // reserviert Speicher für 100 Objekte delete [] pList; // WICHTIG: gibt den Speicher wieder frei
Wenn sich die Größe allerdings dynamisch ändern sollte, während dein Programm läuft, ist std::vector wirklich die beste Lösung...
Mfg, smasher1985
[ Dieser Beitrag wurde am 01.04.2003 um 17:59 Uhr von smasher1985 editiert. ]
-
@smasher1985
Und der Vorteil deiner Variante ist jetzt welcher genau?
Man muss den Speicher von Hand freigeben und es werden unnötigerweise 300 Standard-Ctoren aufgerufen. Also irgendwas tolles muss ich hier übersehen.
-
@HumeSikkins: Natürlich ist meine Variante nicht besser, sie hat auch nichts "Tolles" (hab ich das behauptet???), aber - ich zitiere -
Es gibt wohl auch vector oder so, aber ich wollte das lieber selbst schreiben können, um die Zusammenhänge endlich einmal wirklich zu verstehen.
Also, dachte ich, es wäre vielleicht ganz hilfreich, zu zeigen, wie die dyamische Speicherreservierung ohne std::vector funktioniert...
Mfg, smasher1985
-
recht haste... das wusste Humme nix mehr drauf zu anworten :p
-
Hallo <gertrude>
Bist Du noch interessiert daran so einen Vektor selbst zu programmieren???
Ich könnte mal in meinen alten Amiga OS Manuals nachschauen da sind beispiele von verketteten Listen. Damals war alles noch in C. Soviel ich mich erinnere (AFAIK) ist es gar nicht so extrem kompliziert.
-
vektor != verkettete liste
-
Recht haste! aber <gertrude> möchte 'sowas' selber programmieren können, da könnten die Amiga-Library beispiele helfen. Die würden dann, da hast Du recht, besser auf <dqueue> passen.
-
Zu der einfach verketten Liste findest du verdammt viel im Internet.
Ich würde mal einfach danach googlen, denn die vl scheint genaus das zu sein
was du suchst!Gruß,
Khadgar
-
ein vector ist niemals als liste implementiert, dafuer gibts list.
ein dynamisches array zu implementieren ist eigentlich eine pointer-anfaenger aufgabe.
einfach ein doppelt so grosses array allokieren, die werte kopieren, das alte freigeben, und das ganze jedesmal, wenn das bisherige array voll ist.
-
Original erstellt von PeterTheMaster:
einfach ein doppelt so grosses array allokieren, die werte kopieren, das alte freigeben, und das ganze jedesmal, wenn das bisherige array voll ist.Das ist dann aber eine sehr dürftige Dynamik oder?
Was passiert bei 2n+1 Elementen?
-
Hallo <gertrude>,
hab leider keine Zeit für ein Beispiel. Suche bitte in der einschlägigen Fachliteratur unter "Einfach verkettete Liste" bzw. "Doppelt verkettete Liste".
In diesem Zusammenhang solltest Du die Lösung deines Problems erarbeiten können.Im übrigen erfordert C++ nicht nur intensives Einarbeiten, sondern vor allem Zeit (das hängt mit der schier unendlichen Anzahl von Möglichkeiten zusammen).
Gruss