解决方法
如果创建新队列,则可以使用构造函数:
std::vector<int> v = get_vector(); std::queue<long int,std::deque<long int>> q(std::deque<long int>(v.begin(),v.end()));
(你可以改变底层容器的味道,虽然deque可能是最好的.)
如果队列已经存在,那么没有基于范围的算法,您可以轻松编写自己的队列:
template <typename Iter,typename Q> push_range(Q & q,Iter begin,Iter end) { for ( ; begin != end; ++begin) q.push(*begin); }
顺便说一句:如果你的算法需要大量的灵活性,那么你最好只使用std :: deque.只有当你想明确地说“这是我想要的行为”(即推/弹)时,才应该使用容器适配器(队列和堆栈).