Не реализуйте тоже. Используйте уже существующие реализации в стандартной библиотеке:
std::queue<T, std::list<T> >
std::queue<T, std::deque<T> > // uses deque by default, by the way
Вы можете ввести их, чтобы сделать их замену очень простой:
template <typename T>
struct queue_list
{
typedef typename std::queue<T, std::list<T> > value_type;
}
template <typename T>
struct queue_array
{
typedef typename std::queue<T, std::deque<T> > value_type;
}
typedef queue_list<the_type>::value_type container_type; // use one
typedef queue_array<the_type>::value_type container_type;
Теперь профиль и найди, что лучше. Вероятно, массив будет иметь лучшую производительность для кеша.
Вы можете использовать распределитель пула boost , чтобы попытаться воспользоваться преимуществами быстрой вставки и удаления списка вместе с производительностью кэша массива:
typedef typename std::queue<T, std::list<T, boost::pool_allocator<T> > > value_type;
Еще одна структура, которую стоит попробовать, это boost::circular_buffer
, как предложено fnieto :
template <typename T>
struct queue_buffer
{
typedef typename std::queue<T, boost::circular_buffer<T> > value_type;
}