我们知道 std::vector 给出了连续的内存布局,而 std::list 给出了链接的内存布局,我的问题是 std::vector< std::list > 的内存布局是什么?它是包含 std::list 的内容还是只包含几个指向列表的指针?
问问题
2088 次
2 回答
3
尽管确实std::list
将其元素保存在单独分配的内存位置中,并作为链表相互连接,但链表本身的标题结构需要一小块内存。当您创建std::list<T>
.
一个向量std::list<T>
由各个链表的这些“标题”项组成,分配在一个连续的内存区域中:
于 2013-08-03T02:18:11.940 回答
1
它和其他任何东西一样std::vector<T>
(除非T=bool
):它包含一个T
. 在这种情况下,它是一个数组std::list
。std::list
对象基本上是它“包含”的对象列表的簿记结构;实际元素位于此结构之外的单独分配的块中(因此在由 管理的内存块之外std::vector<std::list<T> >
)。
请注意,只要它是可复制的,它std::vector
并不关心什么。T
原则上,您可以设计一个专门用于承载其他容器的容器,但这不是std::vector
工作方式。
于 2013-08-03T02:27:32.333 回答