我正在实现toposort的一个变体,它需要一个结构来保存没有传入边的元素。queue和stack似乎都适用于此目的,因为它们被取出的顺序并不重要。问题是:它们中的任何一个都比另一个快得多吗?
发布于 2013-04-01 04:03:14
queue和stack都是容器适配器,它们本身并不是完整的容器。默认情况下,stack和queue都是在std::deque之上实现的,如果您没有更改此设置,它们应该具有类似的性能。
这真的取决于你正在编码的应用程序的类型,你可能会选择底层容器,这将使你最想要的操作受益。
发布于 2013-04-01 04:04:29
回答你的主要问题:我不知道。我不认为它们中的任何一个更快,因为对于std::deque (堆栈和队列的默认内部容器),push_back和push_front (以及pop_back和pop_front)是对称的。没有比这更快的了。但是,我建议将普通的旧std::vector与push_back和pop_back一起使用,或者等效地使用
std::stack<T, std::vector<T>>有关堆栈默认使用deque的原因,请参阅here。
发布于 2013-04-01 04:02:58
它们都有恒定的复杂性。您只需要对它进行计时,以确定是否有任何常量更高
http://www.cplusplus.com/reference/stack/stack/pop/
http://www.cplusplus.com/reference/queue/queue/pop/https://stackoverflow.com/questions/15733838
复制相似问题