2012-06-15 17 views
6

Ho bisogno di una coda sulla n elementi in cui l'inserimento di (n +1) ° voce rimuove la 0 ° voce e l'inserimento può essere fatta solo sul "indietro".
Esiste già una struttura di questo tipo nella libreria boost o standard?coda di dimensioni limitate

+1

spinta buffer circolare? – PlasmaHH

+0

Puoi dare limiti alle dimensioni? –

+1

Lo spero; un buffer circolare di dimensioni illimitate non è distinguibile da un vettore;) – Rook

risposta

8

È possibile utilizzare un boost::circular_buffer avvolto da un std::queue, qualcosa di simile:

#include <queue> 
#include <boost/circular_buffer.hpp> 

typedef std::queue<my_type, boost::circular_buffer<my_type>> my_queue; 
const int n = 3; 
... 
my_queue q(boost::circular_buffer<my_type>(n)); 
q.push(1); 
q.push(2); 
q.push(3); 
q.push(4); // queue now contains 2,3,4 
+1

ma perché lo wrapp in una 'coda '? perché non bare 'circular_queue' –

+5

@DiproSen: l'unico scopo di' std :: queue' (ever), è quello di impedire a se stessi di accedere al contenitore sottostante tranne che spingendo un'estremità e leggendo/scoppiando l'altra. Sei quello che ha detto che ne hai bisogno. –

+0

Ora è davvero pulito, devo dire! :) –

Problemi correlati