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 auch std::queue kann und noch viel mehr, da std::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() ), dann std::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.


Anmelden zum Antworten