c++中list容器里erase的用法
时间: 2024-10-21 07:10:37 浏览: 25
在C++中,`std::list`容器提供了`erase()`成员函数用于删除指定位置的元素。`erase()`有两种形式:
1. ** erase(iterator position)**: 删除从`position`开始的单个元素。这会使后面的元素向前移动一位填补空缺。
```cpp
std::list<int> myList = {1, 2, 3, 4, 5};
auto it = myList.begin(); // 获取起始迭代器
it++;
myList.erase(it); // 删除第二个元素(索引1),现在列表变为{1, 3, 4, 5}
```
2. ** erase(iterator first, iterator last)**: 删除一段连续的元素,范围由`first`和`last`迭代器之间界定。`last`并不包含在删除范围内。
```cpp
std::list<int> myList = {1, 2, 3, 4, 5};
myList.erase(myList.begin(), myList.begin() + 3); // 删除前三项,列表变为{4, 5}
```
在使用`erase()`之后,通常需要更新对原列表的操作,因为`erase()`改变了容器的实际大小和内部布局。
相关问题
请举一个例子说明C++ list容器使用erase函数的方法
当使用C++中的list容器时,可以使用erase函数来删除容器中的元素。erase函数有两种用法:
1. 删除单个元素
可以使用erase函数删除list容器中的单个元素,例如:
```c++
list<int> mylist = {1, 2, 3, 4, 5};
auto it = mylist.begin();
advance(it, 2); // it指向第3个元素,即3
mylist.erase(it); // 删除第3个元素
```
在上面的代码中,我们首先创建了一个包含5个整数的list容器mylist,然后使用advance函数将迭代器it指向第3个元素,最后使用erase函数删除了第3个元素。
2. 删除一段元素
除了删除单个元素外,还可以使用erase函数删除list容器中的一段元素,例如:
```c++
list<int> mylist = {1, 2, 3, 4, 5};
auto it1 = mylist.begin();
auto it2 = mylist.begin();
advance(it1, 1); // it1指向第2个元素,即2
advance(it2, 4); // it2指向第5个元素,即5
mylist.erase(it1, it2); // 删除第2个到第5个元素
```
在上面的代码中,我们首先创建了一个包含5个整数的list容器mylist,然后使用advance函数将迭代器it1指向第2个元素,将迭代器it2指向第5个元素,最后使用erase函数删除了第2个到第5个元素。
注意:在使用erase函数删除元素时,要注意迭代器的有效性,避免出现迭代器失效的情况。
请举一个例子说明C++ list容器使用erase函数的用法
C++中的list容器使用erase函数可以删除容器中指定位置或指定元素的值。例如,以下代码可以删除list容器中第二个元素:
```c++
#include <iostream>
#include <list>
using namespace std;
int main() {
list<int> mylist = {1, 2, 3, 4, 5};
auto it = mylist.begin();
advance(it, 1);
mylist.erase(it);
for (auto i : mylist) {
cout << i << " ";
}
return 0;
}
```
输出结果为:1 3 4 5
在这个例子中,我们使用了advance函数将迭代器it移动到第二个元素的位置,然后使用erase函数删除该元素。最后,我们遍历list容器并输出其余元素的值。
阅读全文