Objekte und (Doppelt) verkettete Listen
-
Wenn du nicht gerade scharf bist, eine verkettete Liste selber zu bauen, solltest du die STL benutzen. Entscheide dich für einen Container, je nach dem, was du am meisten einsetzen willst. Random Access? Dann vector, sonst einfach list. Wenn du besonders viel Suchen willst, wäre ein assoziativer Container wie (multi)set/map besser geeignet.
-
Danke füe die schnellen Antworten und oh gott nein wollte keine Listen selbst bauen^^ mir soll der STL genügen.
Habe auch schon mal etwas mit dem STL rumgespielt, aber wie ich den in OOP verweden soll, hab ich nun mal gar keinen Plan.Grüße Blade
-
Ich möchte eine Datenbank erstellen in der für eine bestimmtes Produkt daten Festgehalten werden.
Du möchtest ein Programm schreiben, was eine Datenbank ist!?
Falls ja: Dafür nimmt man in der Regel B-Bäume:
http://de.wikipedia.org/wiki/B-BaumIst aber nicht gerade die einfachste Struktur, die ich bisher kennen gelernt habe

Erzähl doch mal ein wenig darüber, wofür das Programm dann sein wird, wie viel Einträge in der DB stehen werden etc...
bb
-
Vieleicht ist "Datenbank" etwas hochgegriffen.
Ich möchte einfach ein paar Daten gebündelt unter einen bestimmten Namen ablegen und diese Bündel entweder eben Anlegen, Löschen, Suchen oder alle Datenbündel im Programm ausgeben lassen. Über Kommandozeile cout ect. nix mit Gui oder sonst wat.Grüße Blade
-
Als Orientierung, wenn du dich schon ein bisschen mit STL Containern auskennst:
http://www.jamesonwilliams.com/bin/stl_container_class_choice.pngDas klingt bei dir nach einem Fall für (multi-)set/map, denn die Anordnung ist bei dir wichtig (für's Suchen) und du willst eben nach einem Schlüssel suchen. Welche davon genau, hängt jetzt von der Art deiner Daten ab.
edit: Und map/set sind intern auch normalerweise als B-Baum oder ähnliches organisiert.
-
Also um mal auf deine eigentliche Frage zu antworten. Das geht genau gleich, wie sonst auch.
class my_database_class { //... }; ... std::list<my_database_class> db; db.push_back ( my_database_class ("das ist ein schlüssel", "und das ist ein Wert") );Ist es das, was du suchst? Oder wo genau ist dein Problem? - Das tolle an den Standardcontainer ist ja, dass du da so ziemlich alles reinpacken kannst, was die einfällt.
-
SeppJ schrieb:
edit: Und map/set sind intern auch normalerweise als B-Baum oder ähnliches organisiert.
dachte bisher immer, dass die idR als avl-bäume implementiert sind...
bb
-
Naja, wie die definiert sein sollen wurde aber nirgenwo festgeschrieben. Aber bei den größten Compilern ist es AVL.
-
Ich glaube mein Problem besteht mehr im Programm schreiben als im Verstehen.
Wie soll ich den die Liste in die Klasse einfügen ? Iwo müssen doch die Zeiger auf den Nachfolger oder Vorgänger zeigen?Grüße Blade
-
Du brauchst einfach nur die Klassen der STL verwenden, s.a. http://magazin.c-plusplus.net/artikel/Aufbau der STL - Teil 1%3A Container
Die kümmern sich dann intern um die richtige Speicherverwaltung.
-
blade1982 schrieb:
Ich glaube mein Problem besteht mehr im Programm schreiben als im Verstehen.
Ich glaube in diesem Fall umgekehrt...
blade1982 schrieb:
Wie soll ich den die Liste in die Klasse einfügen ? Iwo müssen doch die Zeiger auf den Nachfolger oder Vorgänger zeigen?
Nicht deine Klasse soll die Liste enthalten, sondern die Liste die Objekte die du halten willst. Und du selbst musst dich nicht um die Implementierungsdetails der Liste kümmern.