std::stack是用双向链表实现的吗?
Is std::stack implemented using a double linked list?
曾经有一位教授告诉我 std::stack
通常使用双链表实现,如果您只需要访问顶部,这将是多余的。
他的结论是,使用 std::vector
或单个链表实现的用户定义堆栈结构将节省内存 space。
不管怎样,反正我很可能会使用STL版本(不用浪费能源),但是std::stack
真的那样浪费内存吗?
std::stack
是一个 容器适配器 。该实现使用另一种容器类型(定义为模板参数)进行存储。
默认情况下,它使用 std::deque
,这不完全是双向链表,但可以使用 std::list
.
通过 std::vector
支持可以节省少量内存,但可能会降低性能。
曾经有一位教授告诉我 std::stack
通常使用双链表实现,如果您只需要访问顶部,这将是多余的。
他的结论是,使用 std::vector
或单个链表实现的用户定义堆栈结构将节省内存 space。
不管怎样,反正我很可能会使用STL版本(不用浪费能源),但是std::stack
真的那样浪费内存吗?
std::stack
是一个 容器适配器 。该实现使用另一种容器类型(定义为模板参数)进行存储。
默认情况下,它使用 std::deque
,这不完全是双向链表,但可以使用 std::list
.
通过 std::vector
支持可以节省少量内存,但可能会降低性能。