【发布时间】:2018-09-29 16:07:44
【问题描述】:
我知道堆栈可以通过动态数组(例如c++中的std::vector)或链表来实现。
当栈基于动态数组实现时,容量会自动增长,新项目被压入栈中。 我想知道当从堆栈中弹出项目时,数组的容量会减少吗?
在某些应用程序中(例如路径搜索算法),许多项目会先被压入堆栈然后弹出。当堆栈为空时程序结束。如果数组的容量没有减少,当我的程序结束时,我会有一个很大的空数组。
【问题讨论】:
-
这取决于实现
我知道堆栈可以通过动态数组(例如c++中的std::vector)或链表来实现。
当栈基于动态数组实现时,容量会自动增长,新项目被压入栈中。 我想知道当从堆栈中弹出项目时,数组的容量会减少吗?
在某些应用程序中(例如路径搜索算法),许多项目会先被压入堆栈然后弹出。当堆栈为空时程序结束。如果数组的容量没有减少,当我的程序结束时,我会有一个很大的空数组。
【问题讨论】:
std::stack 使用 std::deque 作为容器。它根据需要调整大小,向上和向下。
【讨论】: