解决方法
如果创建新队列,则可以使用构造函数:
- 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.只有当你想明确地说“这是我想要的行为”(即推/弹)时,才应该使用容器适配器(队列和堆栈).