【发布时间】:2021-05-18 14:57:41
【问题描述】:
我想实现一个 LIFO 堆栈对象。 C++ 标准库提供了一个方便的堆栈结构 (std::stack) 和一个非常简单的接口。默认情况下,它使用 std::deque 作为其底层容器。
使用 std::stack 而不是直接使用 std::deque 是否有任何性能损失?
我的用例将涉及每秒 许多 次弹出和推送。
【问题讨论】:
-
使用堆栈,或者使用双端队列并手动对其进行堆栈操作应该具有相同的性能。如果您真的想知道,请同时编写代码并进行基准测试。
-
介绍一下,实验比基于意见的答案要好得多
-
@AlessandroTeruzzi 实际上,随机分析可能弊大于利。在进行分析之前,必须知道他们的期望以及原因。
-
@SergeyA 你说得有道理,我的评论很仓促,我不认为堆栈和双端队列实现之间有任何显着差异。代码的清晰性始终非常重要。但是,如果没有实验,我无法确定,“很多”不足以驳回这个问题。话虽如此,基准比分析更好。