Klausurvorbereitung: Anwendung auf STL Container...
-
@drakon
für ein (größeres) Projekt fehlt mir die Zeit, ich muss mich jetzt möglichst gezielt vorbereiten.@Boris
Sowohl als auch
Ich kann mir gut vorstellen, dass wir mit Listen arbeiten sollen.@soclosetome
Ein Verwaltungssystem klingt sinnvoll, danke für den Tipp.
-
erklär uns mal den untschied vor/nachteile einer list und eines array? aber nicht googlen;)

Wenn du diese frage beantworten kannst, ist dir ja klar wann und wo ein array oder ne list zu bevorzugen ist...
-
Naja das eine ist eben um ein vielfaches komplexer als das andere.
Wenn überhaupt geht es auch nicht um die Frage Array oder List, sondern Vector, Deque oder List.
Nur hab ich diese Frage nicht gestellt. Ich suche konkrete Beispiele und Aufgaben, eben in der Art, wie sie soclosetome schon gebracht hat und eben besonders, wenn sie für std::list prädistiniert sind.
-
std::listist praktisch, wenn du z.B. für mehrere Elemente immer das Gleiche tun musst. Dann kannst du in einer For-Schleife alle Elemente mit Iteratoren durchgehen und etwas mit ihnen machen. Es geht auch sehr schnell, einzelne Elemente aus der Liste zu löschen oder irgendwo einzufügen. Dafür gibt es keinen Random-Access, das heisst, du kannst nicht per Index auf ein Element an einer bestimmten Stelle zugreifen.Ein Beispiel dafür wäre eine Liste aus Objekten, für die du alle etwas Bestimmtes tun musst, und wobei es keine Rolle spielt, welche Nummer (Index) ein einzelnes Objekt hat, da du auch nie direkt zugreifen musst.
-
Nexus schrieb:
std::listist praktisch, wenn du z.B. für mehrere Elemente immer das Gleiche tun musst....hmmm aber das geht doch mit einem Array genauso (gut und schnell) ? Oder bezogst Du Dich gar nicht5 auf den Vergleich von Boris ?
ich hätte gesagt: Einfügen und Löschen geht bei einer Liste deutlich schneller und /oder speichereffizienter. Dafür ist ein Array schneller im Zugriff (schon angesprocherer Random Access) und bei großen Mengen kleiner (weniger Overhead).
Gruß,
Simon2.
-
Simon2 schrieb:
hmmm aber das geht doch mit einem Array genauso (gut und schnell) ? Oder bezogst Du Dich gar nicht5 auf den Vergleich von Boris ?
Geht es hier um die Standard-C++-Arrays?
int Array[5];Bei den Arrays kommt einfach hinzu, dass es extrem mühsam ist, sie dynamisch zu verwalten, und mit statischen ist man zu stark eingeschränkt. Von daher sind die STL-Container schon viel einfacher zu handhaben.
Simon2 schrieb:
ich hätte gesagt: Einfügen und Löschen geht bei einer Liste deutlich schneller und /oder speichereffizienter. Dafür ist ein Array schneller im Zugriff (schon angesprocherer Random Access) und bei großen Mengen kleiner (weniger Overhead).
Nexus schrieb:
Es geht auch sehr schnell, einzelne Elemente aus der Liste zu löschen oder irgendwo einzufügen. Dafür gibt es keinen Random-Access, das heisst, du kannst nicht per Index auf ein Element an einer bestimmten Stelle zugreifen.
Ist vielleicht nicht genau auf den Vergleich Array - Liste bezogen, aber sollte etwa deiner Aussage entsprechen

-
Ich hatte Dich wohl mißverstanden und denke nun, dass wir uns einig sind.

Gruß,
Simon2.
-
smooth_op schrieb:
Naja das eine ist eben um ein vielfaches komplexer als das andere.
Wenn überhaupt geht es auch nicht um die Frage Array oder List, sondern Vector, Deque oder List.
Nur hab ich diese Frage nicht gestellt. Ich suche konkrete Beispiele und Aufgaben, eben in der Art, wie sie soclosetome schon gebracht hat und eben besonders, wenn sie für std::list prädistiniert sind.Wir haben dir ja bereits relativ viele Beispiele gebracht.
Und wie auch schon gesagt ist die BENUTZUNG der Standardcontainer wirklich sehr simple. Wie auch schon gesagt sind listen einfach speziell dafür ausgelegt listen Funktionen zu benutzen, also vorne/hinten Elemente anfügen/entfernen. Das ist bei einer std::list konstant, bei einem std::vector hingegen O(n), was einen grossen Unterschied macht, wenn du viele Objekte hast. Also ist eine list dann dafür geeignet, wenn du viele Operationen hast, die die list verändern.
-
drakon schrieb:
Wir haben dir ja bereits relativ viele Beispiele gebracht.
Weiss ich, bin ja auch zufrieden

Ich wollte dem Boris nur nochmal meine Intension erklären, weil er sie anscheinend missverstanden hat.
Die Unterschiede der Container und ihre jeweiligen Vor- und Nachteile sind mir klar, musste den Kram ja selbst implementieren.
Mir hats nur an Kreativität gefehlt jetzt auch was sinnvolles damit anzustellen.Nochmal danke an alle!
-
smooth_op schrieb:
Mir hats nur an Kreativität gefehlt jetzt auch was sinnvolles damit anzustellen.
Na. Etwas "sinnvolles" wirds auch nicht geben, wenn du kein grössers Projekt machst.

Ein bisschen Zahlen in listen einfügen und wieder löschen ist ja sehr öde. Wenn es allerdings irgendwelche Partikel sind, die durch den Raum fliegen sieht die Sache auch gleich wieder anders aus.
-
Ok, ich forumiere um: Sinnvoll im Bezug aufs Bestehen meiner nächsten Prüfung.
Und so ein CD Verwaltungssystem hält sich sicher noch im zeitlichen Rahmen und sollte mir Übung im Umgang geben.
-
Naja, beliebt war bei uns immer eine Liste zu erweitern. Man bekam dann immer eine Teil-Implementierung einer Liste/Queue und sollte diese dann erweitern:
Also etwas in der Form: Schreiben sie eine Funktion die die Elemente einer Liste/Queue herumdreht. Wenn's ganz bös kommt muss man auch eine Funktion schreiben, welche eine Liste in eine Queue, Map unwandelt. Oder auch: Schreiben sie eine Funktion zum Löschen eines Elementes einer Map so dass der resultierende Baum ausgeglichen bleibt. (Nicht einfach)
Ein guten Tipp kann ich dir noch geben. Schaue doch mal in den Hausaufgaben nach. Bei uns waren die immer so gestellt dass die Prüfungsrelevanz hatten.
-
Hey,
bisher war es bei uns auch die Implementierung einer eigenen Liste/Deque, aber diesmal wird wahrscheinlich mit der stl gearbeitet.
Assoziative Container kann ich zum Glück ausschliessen. Listen in Queue umwandeln hätte ich jetzt auch so meine Probleme
Bei den Hausaufgaben findet sich nicht viel, da wir meistens neue Listen-Methoden unserer eigenen Liste erweitern mussten und Algorithmen schreiben usw. Aber so 1-2 sachen gibts dort auch zum vorbereiten.