C++ list remove和erase的区别是什么

avatar
作者
猴君
阅读量:0

在C++中,list是STL中的一种容器,提供了remove()和erase()两种方法来删除元素。这两种方法的区别如下:

  1. remove()方法: remove()方法是list容器自带的方法,用于删除容器中指定值的所有元素。它接受一个参数,即要删除的值,然后会将容器中所有匹配该值的元素都删除。remove()方法会返回一个指向删除后的最后一个元素的迭代器,但不会改变容器的大小。例如:
std::list<int> mylist = {1, 2, 3, 4, 3, 5}; mylist.remove(3); // 现在mylist为{1, 2, 4, 5} 
  1. 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()方法用于删除指定位置或范围的元素。需要根据具体的需求选择使用哪种方法。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!