阅读量:0
在C++中,list是STL中的一种容器,提供了remove()和erase()两种方法来删除元素。这两种方法的区别如下:
- remove()方法: remove()方法是list容器自带的方法,用于删除容器中指定值的所有元素。它接受一个参数,即要删除的值,然后会将容器中所有匹配该值的元素都删除。remove()方法会返回一个指向删除后的最后一个元素的迭代器,但不会改变容器的大小。例如:
std::list<int> mylist = {1, 2, 3, 4, 3, 5}; mylist.remove(3); // 现在mylist为{1, 2, 4, 5}
- erase()方法: erase()方法是list容器的成员函数,用于删除容器中指定位置的一个或多个元素。它接受一个迭代器参数,指定要删除的元素的位置,或者一个范围的迭代器参数,指定要删除的元素的范围。erase()方法会返回一个指向删除后的下一个元素的迭代器,并且会改变容器的大小。例如:
std::list<int> mylist = {1, 2, 3, 4, 5}; auto it = mylist.begin(); ++it; mylist.erase(it); // 现在mylist为{1, 3, 4, 5}
总的来说,remove()方法用于删除指定值的元素,而erase()方法用于删除指定位置或范围的元素。需要根据具体的需求选择使用哪种方法。