【发布时间】:2021-12-31 14:02:26
【问题描述】:
使用 std::vector 模拟队列有什么缺点?我天真地认为 push_back 用于 push 和 pop 只是存储第一个元素的位置并增加它。为什么 std::queue 原则上不允许这样的 std::vector 实现(我知道原因是它没有 push_front 方法,但也许有更深层次的东西使它变慢)?感谢您的帮助。
【问题讨论】:
-
一个vector只有对vector的back有push和pop操作,而一个queue需要在一端push和从另一端pop。可以使用其他函数(如
insert和erase)创建队列,但std::queue在底层容器上使用推送和弹出操作。 -
“我天真地认为 [...]” -- 你可能想继续往下想,只做存储第一个位置的工作元素到底层容器。如果您计算出一些技术细节,您可能会发现您的“增强矢量”类似于
deque。 所以,好主意。
标签: c++ vector stl queue implementation