作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我希望将 vector 的全部内容复制到 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);
}
顺便说一句:如果您的算法需要那么大的灵 active ,您最好一开始就使用 std::deque
。容器适配器(queue
和 stack
)应该只在您想明确地说“这是我想要的行为”(即推送/弹出)时使用。
关于c++ - 如何将整个 vector 复制到队列中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8168127/
我是一名优秀的程序员,十分优秀!