Ker*_* SB 14
如果创建新队列,则可以使用构造函数:
std::vector<int> v = get_vector();
std::queue<long int, std::deque<long int>> q(std::deque<long int>(v.begin(),
v.end()));
Run Code Online (Sandbox Code Playgroud)
(您可以根据需要更改底层容器,但deque可能是最好的.)
如果队列已经存在,那么没有基于范围的算法,您可以轻松编写自己的队列:
template <typename Iter, typename Q>
push_range(Q & q, Iter begin, Iter end)
{
for ( ; begin != end; ++begin)
q.push(*begin);
}
Run Code Online (Sandbox Code Playgroud)
顺便说一下:如果你的算法需要大量的灵活性,那么你最好只使用a std::deque.只有当你想明确地说"这是我想要的行为"(即推/弹)时才应该使用容器适配器(queue和stack).
可能最好的方法是直接将元素推入队列.
std::vector<T> v;
...
std::queue<T> q;
for (const auto& e: v)
q.push(e)
Run Code Online (Sandbox Code Playgroud)
即使使用std :: copy也很繁琐,因为你必须将队列包装在一个适配器中(使用std :: copy插入一个STL队列).
| 归档时间: |
|
| 查看次数: |
19996 次 |
| 最近记录: |