std: container c++ - "move to front"

Ich bin auf der Suche nach einem container wie std eine std::list, die effizient bewegen können ein element auf der Vorderseite:

a-b-c-d-e

bewegen "b" nach vorne:

a-c-d-e-b

Gibt es keine solche Funktion im std-Container. Dafür, ich glaube, ich muss kombinieren, entfernen und push_front Funktion hat aber kann jemand eine bessere Idee?

Danke im Voraus.

  • Was bedeutet "effizient" bedeuten?
  • goode Frage ... ich meine, besser als zu entfernen es und schaffen es an die Spitze. Wenn ich hatte, es zu implementieren, von Grund auf (in C), ich könnte einfach machen.Nächster Punkt "c", c.prev Punkt "a", b.prev Punkt "e", b.Nächster Punkt die NULL, vorne Punkt "b" und e.Nächster Punkt "b"... das wäre effizient, aber re-Implementierung von container ist ein bisschen zu aufwendig 😉
  • Die "fast" - Liste-Lösung verändert sich viel von Zeigern (8 bytes in 64-bit-code) an zufällige Positionen in potentiell nicht-Cache-Speicher. Ein Vektor mit fünf Elementen (wie im Beispiel), wird sich möglicherweise passen in eine einzige cache-Zeile, und sehr schnell.
InformationsquelleAutor Jav | 2013-01-29
Schreibe einen Kommentar