gpt4 book ai didi

栈和队列的C++默认实现

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:13 24 4
gpt4 key购买 nike

C++ Primer 5th中,它说stackqueue的默认实现是deque

我想知道为什么他们不使用 list? Stack和Queue不支持随机访问,总是在两端操作,因此list应该是最直观的实现方式,而deque支持随机访问(具有恒定时间)在某种程度上是不必要的。

谁能解释一下这个实现背后的原因?

最佳答案

std::list作为基础容器每个 std::stack::push进行内存分配。鉴于 std::deque以 block 的形式分配内存,并可以重用其空闲容量以避免内存分配。

对于小元素,列表节点的存储开销也会变得很大。例如。 std::list<int>节点大小为 24 字节(在 64 位系统上),元素仅占用 4 字节 - 至少 83% 的存储开销。

关于栈和队列的C++默认实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51266104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com