|
3驿站币
list成员函数pop_front()删掉list中的第一个元素,pop_back()删掉最后一个元素。函数erase()删掉由一个iterator指出的元素。还有另一个erase()函数可以删掉一个范围的元素。
/* || Erasing objects from a list */
#include <list>
int main (void)
{
list<int> list1; // define a list of integers
/* || Put some numbers in the list || It now contains 0,1,2,3,4,5,6,7,8,9 */
for (int i = 0; i < 10; ++i)
list1.push_back(i);
list1.pop_front(); // erase the first element 0
list1.pop_back(); // erase the last element 9
list1.erase(list1.begin());
// erase the first element (1) using an iterator
list1.erase(list1.begin(), list1.end());
// erase all the remaining elements
cout << "list contains " << list1.size() << " elements" << endl;
}
输出是:
list contains 0 elements
请问erase() 函数可以释放list所分配的内存么?
搞不明白如果我存储了很多的int型值到list中,将来不用了,如果释放内存呢? 需要释放么? |
最佳答案
查看完整内容
stl中所有容器 都是存儲的值 所以如果你存儲int到 std::list中 erase...後 不需要進行其他釋放操作
如果你存儲的 一個 new 或 malloc 的 int* 地址std::list erase...後 list 不會delete 或free 需要你自己 釋放指針
如果存儲int* 到容器中 又期望容器釋放 new malloc 的指針
c++11 可以使用 std::list
或者使用boost std::list
上一篇: FillRect的问题下一篇: 如何在VS2010中实现类似易语言中超级列表框的功能
|