Containeradapter
-
Hi ihr,
Habe eben gelernt, dass die E/A Bibliothek 3 Adapter zur Verfügung stellt.
In meinem Buch werden diese Adapter kurz erklärt, was sie bringen wird jedoch nicht gesagt.Was mich zuerst wundert ist, dass mir die Adapter irgendwie genau wie Kontainer vorkommen.
Nur eben, dass sie halt 'Adapter' heißen.
Zudem bringen sie irgendwie auch nichts.
Ich meine wofür will ich einen Stack-Adapter, wo ich von oben nach unten alle Elemente durchackern muss, wenn ich doch einfach einen Vector nehmen kann.
Okay...-.- Der Stack löscht das oberste Element beim Zugriff dann automatisch, was vielleicht ein kleiner Vorteil ist... aber irgendwie auch nicht so wirklich.Was ist der Unterschied zwischen Adaptern und Kontainern und was bringen Adapter dann genau?
Habe auch im Netz immer nur Erklärungen aber keine Begründungen gefunden.
Der einzige sinnvolle Satz war folgender:Stack:
Der Vorteil dieser kompliziert scheinenden Vorgehensweise ist, dass das obenliegende Element nicht kopiert werden muss, sondern mit Referenzen gearbeitet werden kann.
Doch so viel sagt mir das auch nicht.
cya
David
-
Ein Adapter ist nicht dazu da, als vollwertiger Container angesehen zu werden. Das ist eine Hilfsstruktur, die eine eigene Funktionalität implementiert - und dazu als "Hilfsmittel" die Standardcontainer verwendet.
(stack stellt z.B. einen LIFO-Speicher dar, queue einen FIFO, priority_queue eine Prioritäts-Warteschlange)
-
Also FIFO liesse sich ja auch irgendwie aus einem Vector basteln... diese Prioritätswarteschleife scheint aber wirklich sinnvoll zu sein.
Wie funktioniert die- gibts da Beispiele zu? Das meiste, was ich im Netz gefunden habe... auch hier im Forum im Containertutorial von CStoll war meist nur Erklärung.
Quellcodebeispiele gabs irgendwie nicht
-
Klar, die Funktionsweise der Adapter könnte man auch gerne selber nachbauen, aber wozu? Wenn du etwas entsprechendes brauchst, kannst du einfach die entsprechenden Klassen verwenden.
Btw, FIFO auf einem vector dürfte ein wenig mehr Aufwand sein, weil man da nur an einem Ende arbeiten kann. Und die priority_queue kombiniert die Datenverwaltung des verwendeten Containers mit den STL-Algorithmen push_heap() und pop_heap().
-
Kennst du vllt Beispiele, wo diese Adapter PRODUKTIV verwendet werden?
-
Auf Anhieb nicht - aber das muß nichts heißen
