c++ erase迭代器指向的元素怎么写
时间: 2024-03-21 19:40:43 浏览: 45
使用 `erase` 函数时,需要传入一个迭代器指向要删除的元素。具体写法如下:
```c++
container.erase(iterator);
```
其中,`container` 是容器类的对象,`iterator` 是指向要删除元素的迭代器。
例如,如果要删除向量 `vec` 中的第三个元素,可以这样写:
```c++
std::vector<int> vec = {1, 2, 3, 4, 5};
auto it = vec.begin() + 2; // 获取指向第三个元素的迭代器
vec.erase(it); // 删除第三个元素
```
注意,这里使用 `begin()` 函数获取迭代器,然后通过加上偏移量 2 获取指向第三个元素的迭代器。
相关问题
c++ erase迭代器指向的多个元素怎么写
使用 `erase` 函数时,还可以传入一对迭代器,表示要删除的元素范围。具体写法如下:
```c++
container.erase(first, last);
```
其中,`container` 是容器类的对象,`first` 和 `last` 是迭代器,表示要删除的元素范围为 `[first, last)`,即包含 `first`,但不包含 `last`。
例如,如果要删除向量 `vec` 中从第三个元素开始的三个元素,可以这样写:
```c++
std::vector<int> vec = {1, 2, 3, 4, 5};
auto first = vec.begin() + 2; // 获取指向第三个元素的迭代器
auto last = first + 3; // 获取指向第六个元素的迭代器
vec.erase(first, last); // 删除第三个到第五个元素
```
注意,这里使用 `begin()` 函数获取迭代器,然后通过加上偏移量 2 获取指向第三个元素的迭代器,再通过加上偏移量 3 获取指向第六个元素的迭代器。
介绍c++中list的迭代器的erase
在C++中,list是双向链表容器,它提供了迭代器(iterator)来遍历和操作容器中的元素。list的迭代器erase函数用于删除指定位置的元素,并返回指向被删除元素的下一个元素的迭代器。
erase函数有两种重载形式:
1. erase(position): 删除position所指向的元素,并返回指向被删除元素的下一个元素的迭代器。
2. erase(first, last): 删除[first, last)范围内的元素,返回last迭代器。
以下是示例代码:
```cpp
#include <iostream>
#include <list>
int main() {
std::list<int> myList = {1, 2, 3, 4, 5};
// 使用迭代器遍历list
std::list<int>::iterator it = myList.begin();
while (it != myList.end()) {
if (*it == 3) {
it = myList.erase(it); // 删除值为3的元素,并返回下一个元素的迭代器
} else {
++it;
}
}
// 输出删除元素后的list
for (int num : myList) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果为:1 2 4 5
阅读全文