我曾经有一位教授告诉我,std::stack
通常是使用双链表实现的,如果您只需要访问顶部,这将是多余的。
他的结论是用std::vector
或单个链表实现的用户定义堆栈结构可以节省内存空间。
无论哪种方式,我都可能会使用STL版本(没有浪费精力),但std::stack
真的浪费了这样的记忆吗?
答案 0 :(得分:6)
std::stack
是容器适配器。该实现使用另一个容器类型(定义为模板参数)进行存储。
默认情况下,它使用std::deque
,它不完全是双链表,但可以使用std::list
。
使用std::vector
支持可以节省少量内存,但可能会产生性能损失。