每次在std :: list容器中插入元素时都会发生动态分配吗?

时间:2014-09-11 05:38:32

标签: c++ containers stdlist

如果我将一个元素插入一个空的std::list容器中,我希望会发生内存分配以存储我的元素。现在,如果我删除此元素并添加一个新元素,分配的内存是否会在插入时释放并重新分配,或者常见的实现能够保留一个已释放(擦除)的条目池,以便可以重用它们?

1 个答案:

答案 0 :(得分:0)

std::list<>实现链表数据结构,因此(概念上)每次插入元素时都会分配新内存。话虽这么说,所有标准容器类都接受一个表示要使用的分配器的类型参数。使用此参数,您可以将分配器更改为仅将指针返回到预分配的内存区域的分配器。当然,如果您已经知道预先需要多少内存,则不清楚为什么要使用这种类型的数据结构。