是使用双链表实现的 std::stack
Is std::stack implemented using a double linked list?
我曾经有一位教授告诉我,std::stack
通常是使用双链表实现的,这将是多余的,因为你只需要访问顶部。
他的结论是,使用std::vector
或单个链表实现的用户定义的堆栈结构将节省内存空间。
无论哪种方式,我都可能使用STL版本(浪费能源没有用(,但是std::stack
真的那样浪费内存吗?
std::stack
是一个容器适配器。该实现使用另一种容器类型(定义为模板参数(进行存储。
默认情况下,它使用 std::deque
,这不完全是一个双链表,尽管可以使用 std::list
。
通过用std::vector
支持它可以节省少量内存,但可能会降低性能成本。
相关文章:
- 我应该实现右值推送功能吗?我应该使用std::move吗
- std::random_device是如何实现的
- 理解GCC中的std::pow实现
- 在没有未定义行为的情况下实现类似std::vector的容器
- std::unordered_map 搜索算法是如何实现的?
- C++标准是否允许<double>在没有开销的情况下实现 std::可选
- std::背后的基本原理assignable_from可能的实现
- 在std::launder之前,std::vector的所有实现都是不可移植的吗?
- 为什么 std::lerp 不适用于任何已实现所需操作的类型?
- glibcxx STL 在实现 std::valarray::sum() 时是否不正确?
- C++矩阵类运算符使用 std::common_type_t 和复数的实现
- std::max() 函数与定点实现的比较中的问题
- 使用 std::forward_list 返回错误的队列实现
- std::bind 是否实现了 std::ref 和 std::cref 来消除函数调用的歧义?
- 在 x86 上实现 std::atomic_thread_fence(std::memory_order_seq_cst
- std::extent 实现详细信息说明
- 使用 std::call_once 实现类似单例的功能
- 了解 std::is_base_of 的重新实现
- 如何在跳过所有内部实现的同时跳转到 GDB 中 std::function 中的函数?
- std::实现移动