Container gesucht
-
Hi,
ich suche quasi nach einer queue in der ich shiften kann also so, dass ich bspw. die Reihenfolge der Spieler die dran kommen in einem Skatspiel darstellen kann. Je nachdem wer zuerst dran ist soll als erstes in der queue stehen während die innere Reihenfolge beibehalten bleibt. Kennt das jemand?
-
Dafür brauchst du imo keine eigene Datenstruktur. Irgendwo hast du ja die ganzen Spieler gespeichert und jetzt kannst du ganz einfach einen Index drauf speichern (daher am besten etwas array ähnliches, wie z.B std::vector) wer dran ist und schön modulo("anzahl spieler") rechnen. Das hat eigentlich den gewünschten Effekt. Dazu kommt, dass du den Spieler auch einfach irgendwie wechseln kannst. Also von Spieler 2 zu Spieler 5.
-
connntttt schrieb:
Hi,
ich suche quasi nach einer queue in der ich shiften kann also so, dass ich bspw. die Reihenfolge der Spieler die dran kommen in einem Skatspiel darstellen kann. Je nachdem wer zuerst dran ist soll als erstes in der queue stehen während die innere Reihenfolge beibehalten bleibt. Kennt das jemand?Das ist ein Ring.
Implementieren kann man den auf viele Weisen. Zum Beispiel mittels der std::queue.l.push_back(l.front());l.pop_front();oder als doppelt berkettete Liste
l.push_back(l.front());l.pop_front();oder als Ringpuffer
l.push_back(l.front());l.pop_front();oder als intrusiven Ring
aktivePlayer=activePlayer->nextoder als, einfach verkettete Liste mit Start- und Endezeiger
l.push_back(l.front());l.pop_front();auch als einfach verketteten Ring
l.push_back(l.front());l.pop_front();Hast Du noch mehr Bedingungen?
Muß es brutal schnell sein oder nur extrem schnell? Willst Du fertige Sachen nehmen oder selber basteln? Kommt boost in Frage? Sollen Zeiger auf Spieler verwaltet werden? Soll die Liste den Besitz und die Aufräumverantwortung haben?Kurzum, die std::queue<Spieler*> dürfte supi sein, außer Du findest ein Argument dagegen, in diesem Fall können wir auch was stricken, aber je spezieller das wird, desto mehr Aufwand wird es bedeuten.
-
Nein danke das reicht, habe keine besonderen Bedinungen. Dachte nur, dass es das evtl. schon fertig gibt dann müsste ich die Funktionalität nicht noch mit in eine andere Klasse nehmen.
-
connntttt schrieb:
Nein danke das reicht, habe keine besonderen Bedinungen. Dachte nur, dass es das evtl. schon fertig gibt dann müsste ich die Funktionalität nicht noch mit in eine andere Klasse nehmen.
Naja, Du brauchst zum Abstrahieren ja eh eine
Spiel::derNaechsteIstJetztDran()und ob da ein Zeile steht um den Container oder vielleicht viel besser Drakons Index zu vestellen oder drei Zeilen, ist wohl ganz egal.
-
Wie waer's mit valarray? http://www.cplusplus.com/reference/std/valarray/valarray/
Das hat genau diese Shifts.
Wie schon gesagt ist das nur nicht unbedingt noetig.