首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >STL队列和STL堆栈哪个更快?

STL队列和STL堆栈哪个更快?
EN

Stack Overflow用户
提问于 2013-04-01 03:57:31
回答 5查看 5.8K关注 0票数 3

我正在实现toposort的一个变体,它需要一个结构来保存没有传入边的元素。queuestack似乎都适用于此目的,因为它们被取出的顺序并不重要。问题是:它们中的任何一个都比另一个快得多吗?

EN

回答 5

Stack Overflow用户

发布于 2013-04-01 04:03:14

queuestack都是容器适配器,它们本身并不是完整的容器。默认情况下,stackqueue都是在std::deque之上实现的,如果您没有更改此设置,它们应该具有类似的性能。

这真的取决于你正在编码的应用程序的类型,你可能会选择底层容器,这将使你最想要的操作受益。

票数 2
EN

Stack Overflow用户

发布于 2013-04-01 04:04:29

回答你的主要问题:我不知道。我不认为它们中的任何一个更快,因为对于std::deque (堆栈和队列的默认内部容器),push_back和push_front (以及pop_back和pop_front)是对称的。没有比这更快的了。但是,我建议将普通的旧std::vector与push_backpop_back一起使用,或者等效地使用

代码语言:javascript
复制
std::stack<T, std::vector<T>>

有关堆栈默认使用deque的原因,请参阅here

票数 2
EN

Stack Overflow用户

发布于 2013-04-01 04:02:58

它们都有恒定的复杂性。您只需要对它进行计时,以确定是否有任何常量更高

代码语言:javascript
复制
http://www.cplusplus.com/reference/stack/stack/pop/
http://www.cplusplus.com/reference/queue/queue/pop/
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15733838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档