我需要能够将一个 std::queue 的内容添加(附加)到另一个,最好以与使用 std::deque::insert 大致相同的方式,但使用 std::vector?我宁愿继续使用 std::vectors,而不是进行重大重写来实现 std::deques。
与我之前在同一个项目中的一些帖子一样,我的流动性有限,因为我必须使用一些遗留代码。大部分限制与速度有关。尽管如此,这个论坛的成员还是提出了一些优雅而独特的解决方案;我希望能找到另一个。
// This works...
std::deque<std::vector<uint8_t>> aaa;
std::deque<std::vector<uint8_t>> bbb;
aaa.insert(aaa.end(), bbb.begin(), bbb.end());
// This, of course, does not work...
std::queue<std::vector<uint8_t>> ccc;
std::queue<std::vector<uint8_t>> ddd;
ccc.insert(ccc.end(), ddd.begin(), ddd.end());
显然不会编译,因为 ccc 类型 std::queue 不支持插入
一些重要的注意事项:永远不会有正在使用的容器(队列、双端队列等)需要 FIFO 以外的任何东西的情况。此外,该处理处理的队列量在每秒 80,000 到 100,000 个元素的范围内,通常非常小,有时非常大。