【发布时间】:2016-02-16 21:43:05
【问题描述】:
曾经有一位教授告诉我,std::stack 通常是使用双链表实现的,如果您只需要访问顶部,这将是多余的。
他的结论是,使用std::vector 或单个链表实现的用户定义堆栈结构将节省内存空间。
不管怎样,我很可能还是用STL版本(不浪费精力),但是std::stack真的那么浪费内存吗?
【问题讨论】:
-
我不知道答案,但我想至少它取决于编译器。
-
大多数 CPP 编译器(肯定是你的)不是开源的吗?
-
很好的问题,但是您可以尝试自己编译,或使用调试器,或查看规范,或查看源代码等。
-
你确定你没听错,他居然说的是双端队列,即
deque?看看declaration ofstd::stack,它的用途应该很明显了。您打算在使用它之前检查文档,对吗? -
@Aposhian,您是否点击了我提供的链接?它没有清楚地回答你的问题吗? "充当底层容器的包装器 [...] 用于存储元素的底层容器的类型。[...] 标准容器 std::vector、std::deque 和 std: :list 满足这些要求。” 如果您阅读该页面,您会看到
std::stack的底层容器(即 std::stack 实际存储数据的实现方式)是模板参数,所以不固定。当然,这就是您需要的所有洞察力。
标签: c++ stl linked-list stack doubly-linked-list