合并两个std::队列

Merge two std::queue

本文关键字:std 队列 两个 合并      更新时间:2023-10-16

在stl中是否有连接两个std::queue对象的函数?

std::queue适配器不支持迭代,因此您实际上必须滚动自己的方法来完成此操作。但是考虑到您需要这个功能,您可能应该考虑使用不同的容器。如果你需要随机访问,可能是std::deque。如果您只需要像队列一样的前后访问,请考虑std::list, splice可以在常数时间内一起使用。

stl中似乎没有提供任何选项,但我可以想到一些您可以自己编写的其他内容:

  1. 写你自己的代码读取一个队列到另一个队列,但这是O(n)。

  2. 使用std::copy来操作底层的std::deque容器,同样是0 (n)。

  3. 创建您自己的容器,该容器根据std::queue实现,但可以维护多个队列来模拟O(1)中的连接。