【发布时间】:2020-04-06 13:12:44
【问题描述】:
在C++标准库中,list是双向链表; forward_list 是单链表,但只支持后进先出。
但是,先进先出单链表已被广泛使用,因为它比其他类似列表的容器(forward_list 除外)具有较低的空间开销。所以我想知道:
为什么 C++ 不提供先进先出单链表?
【问题讨论】:
-
std::deque怎么样? -
不是真的,你可以为队列选择容器类型,例如
std::queue<T,std::list<T>>,queue只是一个适配器 -
std::forward_list 怎么样?
-
如果您担心空间开销,那么不言而喻,与双端队列相比,链表对每个元素都有不必要的开销。如果没有更复杂的分配器,每个元素都是一个单独的免费存储分配,其中包括至少与其大小有关的元数据。在列表本身中,每个元素都带有一个指针。
-
你真的需要单链表吗?从性能角度来看,它基本上是您可以使用的最糟糕的数据结构。双端队列应该快几个数量级。
标签: c++ stl containers standards c++20