c – 如何将整个矢量复制到队列中?

前端之家收集整理的这篇文章主要介绍了c – 如何将整个矢量复制到队列中?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我希望将矢量的全部内容复制到C中的队列中.这是一个内置函数还是循环遍历每个元素是必要的?

解决方法

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

原文链接:https://www.f2er.com/c/117616.html

猜你在找的C&C++相关文章