Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否每次在std::list容器中插入元素时都会发生动态分配?_C++_Containers_Stdlist - Fatal编程技术网

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

C++ 是否每次在std::list容器中插入元素时都会发生动态分配?,c++,containers,stdlist,C++,Containers,Stdlist,如果我将一个元素插入到一个空的std::list容器中,我希望会发生内存分配来存储我的元素。现在,如果我删除这个元素并添加一个新的元素,那么分配的内存是否会在插入时释放和重新分配,或者通用实现是否能够保留一个释放(擦除)的条目池,以便可以重用它们 Astd::list实现链表数据结构,因此(概念上)每次插入元素时都分配新内存。也就是说,所有标准容器类都接受表示要使用的分配器的类型参数。使用此参数,可以将分配器更改为只将指针返回到预先分配的内存区域的分配器。当然,如果你已经知道需要多少内存,不清楚

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

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

我需要使用列表,而不是deque,因为我将插入、一端插入、另一端删除,并且会有其他具有迭代器的对象,这些对象在插入或删除时不会失效。这是为了实现不规则采样数据的移动窗口。如果删除该项,您打算如何使迭代器不失效?无论数据结构如何,这都是没有意义的。这些项只在容器的开头(旧的样本)被删除,在末尾(最新的样本)被添加。当我删除不再需要的内容(非常旧的示例)时,我所讨论的迭代器将移动到更新鲜的元素。