c++ list erase
时间: 2023-05-02 13:06:28 浏览: 277
基于C++ list中erase与remove函数的使用详解
C++中的list是一个双向链表容器,即容器中存储的数据类型指向其前驱和后继。erase()是list中的一个成员函数,用于删除容器中一个或多个元素。erase()函数有两种调用方式:
1. erase(iterator position):删除迭代器指向的元素,具体实现为将该元素从链表中摘出来,并调整前驱、后继指针。
2. erase(iterator first, iterator last):删除[first, last)范围内的元素,具体实现为将[first, last)元素从链表中摘出来,并调整前驱、后继指针。
需要注意的是,erase()函数的删除操作并不会释放内存空间,因为list容器在创建空间时会自动分配节点内存,erase()只是将节点从链表中移出,但内存空间仍然保留。如果需要彻底释放内存空间,可以在erase()函数调用后,再调用destroy()函数。
除此之外,erase()函数只要调用正确,便可以高效地从链表中删除元素。由于list的特性,任何位置的删除操作的时间复杂度都为O(1),即使是删除多个元素也是平均O(1)的时间复杂度。因此,使用erase()函数进行list容器元素的删除操作是非常高效的。
阅读全文