我需要使用双打队列,因为它作为有序容器具有良好的属性。我想将此队列传递给接受向量的类构造函数。如果我直接这样做,我会收到以下错误:
候选构造函数不可行:第二个参数没有从 ‘std::queue’ 到 ‘std::vector &’ 的已知转换
如何将队列转换为向量?
原文由 Anthony 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答3.3k 阅读
对 queue_like 行为和 vector-like 行为进行建模的正确容器是
std::deque
。这具有以下优点:
在双端队列的任一端进行恒定时间插入和删除
在不破坏双端队列的情况下迭代元素的能力
std::deque
支持begin()
和end()
方法,这意味着您可以直接构造一个向量(具有兼容的值类型)。不可能将 --- 非变异转换为
queue
vector