Queue in veränderter Reihenfolge ausgeben
-
Danke für die vielen Antworten
Sollte auf jeden Fall ein Queue sein. Ich gucke mir dann mal den priority Queue an.
-
Sarah83 schrieb:
Sollte auf jeden Fall ein Queue sein.
Warum ist dir denn dieser Punkt so wichtig? Die Möglichkeiten einer Queue sind beschränkt (neues Element einfügen, ältestes Element herausholen), damit wirst du deine Sortierung nicht hinbekommen.
-
Eine
std::deque
kann alles was auchstd::queue
kann und noch viel mehr, dastd::queue
lediglich ein Adapter davon ist, was CStoll bereits gesagt hat.
-
Weil ich eigentlich eine Übung mit Queues machen wollte...
Aber welcher Container bietet sich für mein Vorhaben denn besonders an?
-
Nimm so viel wie möglich
std::vector
!
-
Queue ist kein Container
Oder meinst du eigentlich deque?
Ansonsten: Die sequentiellen Container (vector/deque/list) kannst du vor der Ausgabe sortieren, die assoziativen Container (set/map) sind bereits von sich aus sortiert. Und priority_queue liefert dir auf Anfrage das "größte" Element zurück (wobei du selber definieren kannst, was als "größtes Element" gilt).
-
Sarah83 schrieb:
Aber welcher Container bietet sich für mein Vorhaben denn besonders an?
Wenn das "verdrehte" Ausgeben die einzige Anforderung ist, dann ein
std::vector
.
Wenn du zusätzlich etwas Queue-artiges brauchst (z.B:push_back()
+pop_front()
), dannstd::deque
.Wobei, machen kannst du das mit jedem Container, auch mit einer reinen Liste oder Queue. Du müsstest dazu ja bloss die ersten 7 Elemente rausholen und zwischenspeichern (reicht auch Iteratoren auf die ersten 7 Elemente zwischenzuspeicher), diese dann "verdreht" rum ausgeben, und den Rest dann ganz normal durchlaufen.
-
Ah super. Das klingt beides gut.
Ich habe mir vorgestellt die ersten 7 Einträge einfach mit einer Gewichtung zu versehen. Das ist dann ja quasi genau das was für priority_queue nötig ist, oder?
-
Ich wüsste nicht wozu man hier eine Priority-Queue einsetzen sollte.
-
Eine Queue ist ein Ding, wo sich immer hinten welche anstellen, und vorne welche raus gehen können. Der, der sich zuerst angestellt hat, darf auch zuerst wieder raus.
Bei einer priorisierbaren Queue haben bestimmte sich Anstellende Sonderausweise, mit denen sie sich verdrängeln dürfen. Trotzdem müssen sie immer vorne raus.
Du willst etwas haben, wo sich mitten drin Leute bewegen können. Die sollen auch raus gehen dürfen. Das geht aber in einer Queue nicht. Ergo hat eine Queue keinen Sinn.