温馨提示×

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

c++
小樊
121
2024-07-21 10:04:02
栏目: 编程语言

在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()方法用于删除指定位置或范围的元素。需要根据具体的需求选择使用哪种方法。

0