Come fa un priority_queue a mantenere un heap su un deque in modo efficiente?

4

Nel STL C ++, priority_queue (heap) può essere utilizzato con qualsiasi contenitore sottostante, ad esempio deque . In che modo l'implementazione rimane O(log n) se deque s non scambia un elemento nell'indice a con indice b in tempo costante?

    
posta Jakob Weisblat 14.01.2013 - 00:15
fonte

1 risposta

10

Hai ragione che non sarebbe possibile realizzare un'implementazione efficiente dell'heap in cima a una lista doppiamente collegata. Tuttavia, deque s non sono elenchi collegati doppiamente; sono contenitori ad accesso casuale . deque s è in grado di scambiare un elemento nell'indice a con indice b in tempo costante. Vedi la documentazione SGI per deque s .

    
risposta data 14.01.2013 - 07:53
fonte

Leggi altre domande sui tag