Ich möchte eine kreisförmige Liste verwenden.Existiert eine Standardimplementierung einer Circular List für C++?
Kurz meine eigenen (like this person did) zu implementieren, was sind meine Optionen?
Insbesondere was ich tun möchte, ist über eine Liste von Objekten zu iterieren. Wenn mein Iterator das Ende der Liste erreicht, sollte er automatisch zum Anfang zurückkehren. (Ja, mir ist klar, dass dies gefährlich sein könnte.)
See Vladimir's definition of a circular_iterator
: "Ein circular_iterator wird nie mit CircularList :: end() gleichgesetzt, so dass Sie diesen Iterator immer dereferenzieren können."
Danke Naaff! Modding der Index mit der Größe des Vektors ist so eine einfache Lösung, ich schäme mich, ich habe nicht daran gedacht. – Runcible
Wenn Sie sicherstellen, dass die Größe Ihres "Vektors" eine Zweierpotenz ist, verwenden Sie anstelle des teuren Overheads der Modulo-Operation stattdessen den bitweisen "&" Operator, da dieser nur einen Zyklus kostet. Es funktioniert so: '(n mod (2^k)) == (n & (2^k - 1)) 'z.B. 'n% 256 == (n & (255))' –