C++ 是否每次在std::list容器中插入元素时都会发生动态分配?
如果我将一个元素插入到一个空的C++ 是否每次在std::list容器中插入元素时都会发生动态分配?,c++,containers,stdlist,C++,Containers,Stdlist,如果我将一个元素插入到一个空的std::list容器中,我希望会发生内存分配来存储我的元素。现在,如果我删除这个元素并添加一个新的元素,那么分配的内存是否会在插入时释放和重新分配,或者通用实现是否能够保留一个释放(擦除)的条目池,以便可以重用它们 Astd::list实现链表数据结构,因此(概念上)每次插入元素时都分配新内存。也就是说,所有标准容器类都接受表示要使用的分配器的类型参数。使用此参数,可以将分配器更改为只将指针返回到预先分配的内存区域的分配器。当然,如果你已经知道需要多少内存,不清楚
std::list
容器中,我希望会发生内存分配来存储我的元素。现在,如果我删除这个元素并添加一个新的元素,那么分配的内存是否会在插入时释放和重新分配,或者通用实现是否能够保留一个释放(擦除)的条目池,以便可以重用它们 Astd::list
实现链表数据结构,因此(概念上)每次插入元素时都分配新内存。也就是说,所有标准容器类都接受表示要使用的分配器的类型参数。使用此参数,可以将分配器更改为只将指针返回到预先分配的内存区域的分配器。当然,如果你已经知道需要多少内存,不清楚为什么要使用这种类型的数据结构。我需要使用列表,而不是deque,因为我将插入、一端插入、另一端删除,并且会有其他具有迭代器的对象,这些对象在插入或删除时不会失效。这是为了实现不规则采样数据的移动窗口。如果删除该项,您打算如何使迭代器不失效?无论数据结构如何,这都是没有意义的。这些项只在容器的开头(旧的样本)被删除,在末尾(最新的样本)被添加。当我删除不再需要的内容(非常旧的示例)时,我所讨论的迭代器将移动到更新鲜的元素。