我需要一个队列来存储n个项目,其中插入第(n+1)项将删除第0项,并且只能在“后面”进行插入操作。
是否已经有此类结构存在于boost或标准库中?
我需要一个队列来存储n个项目,其中插入第(n+1)项将删除第0项,并且只能在“后面”进行插入操作。
是否已经有此类结构存在于boost或标准库中?
您可以使用一个被boost::circular_buffer
包装过的std::queue
,就像这样:
#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
std::queue
的唯一目的(一直以来)就是防止你访问底层容器,除了通过推送一个端并读取/弹出另一个端之外。你是那个说需要它的人。 - Steve Jessop