PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : STL Containerwahl


bzw.
2008-02-26, 10:23:54
Hallo!

Ich stehe vor der Wahl eines Containers. Normalerweise erfüllt dies die Anforderungen einer Queue. Es kommen Nachrichten rein und sie werde von vorne abgearbeitet. Die Nachrichten haben aber eine eigene Ordnung, normalerweise stimmt diese aber sagen wir mal alle 1000 Operationen müssen ein paar Nachrichten nach einer ID neu sortiert werden.

Eigentlich ist es also eine Queue in die relativ selten aber ein Element sortiert eingefügt werden muß. Was würde man da am Besten nehmen?

Und kann man mit der STL eine Queue irgendwie an eine andere dranhängen? Oder muß man separat alle Elemente an der alten vorne weg nehmen und an der neuen hinten dran hängen?

vielen dank

Trap
2008-02-26, 12:53:03
Die queue/priority_queue Adapter sind meiner Meinung nach nicht sehr gelungen, sie bieten zu wenig Operationen an.

Wenn es wenige verschiedene IDs gibt bietet sich an eine Queue für jede ID zu benutzen, dann muss man nie sortieren. Sonst nimmt man halt eine priority queue.

Gast
2008-03-03, 09:30:39
Danke.

Wobei es nur unterschiedliche IDs gibt. Jedes Element hat eine fortlaufende Nummer - idR. bauen die Threads dies in richtiger Reihenfolge, aber und an kann (bzw. wird) es mal passieren, daß die Ordnung kurz mal daneben liegt. Dieser Punkt muß erkannt werden und korrekt sortiert angehängt werden, auch wenn es 99% der Operationen eine simple FIFO Queue ist.

Das andere Probleme was mir gerade erst bewußt wird ist, daß die Elemente nicht nur in der richtigen Reihenfolge enthalten sein müssen, es muß auch sichergestellt sein, daß keine Lücken enthalten sind. Ich denke deswegen gerade über zwei gekapselte Queues nach, in die immer von einer in eine andere kopiert wird und wo man dies wohl implementieren könnte...