C++vector里面erase
时间: 2023-10-22 20:10:26 浏览: 59
C++的vector类提供了erase()函数来删除vector中的元素。该函数有两种用法:
1. erase(iterator position):删除指定位置的元素。传入一个迭代器作为参数,表示要删除的元素的位置。该函数会返回一个指向被删除元素之后元素的迭代器。
2. erase(iterator first, iterator last):删除指定范围内的元素。传入两个迭代器作为参数,表示要删除的元素的起始位置和结束位置(不包括结束位置)。该函数会返回一个指向被删除元素之后元素的迭代器。
在给出的代码示例中,使用了erase()函数来删除vector中值为3的元素。具体操作如下:
1. 首先,定义一个迭代器it,指向vector的起始位置。
2. 使用循环遍历vector中的所有元素。
3. 判断当前元素是否等于3,如果是,则使用erase()函数删除该元素,并将it指向下一个元素。
4. 输出被删除元素之后的所有元素。
代码示例中使用了erase(iterator __position)函数来删除元素,并返回被删除元素之后的迭代器。在代码中,该函数的实现是_M_erase()函数。
因此,C++ vector中可以使用erase()函数来删除元素。
相关问题
c++ vector.erase
您好!对于C++中的`vector.erase`函数,它用于从向量(vector)中删除一个或多个元素。函数的语法如下:
```cpp
iterator erase (iterator position);
iterator erase (iterator first, iterator last);
```
第一种形式的`erase`函数用于删除指定位置的单个元素,参数`position`是一个迭代器,指向要删除的元素。函数会返回一个指向已删除元素之后位置的迭代器。
第二种形式的`erase`函数用于删除指定范围内的多个元素,参数`first`和`last`分别是一个迭代器,指定了要删除的元素范围。函数会删除从`first`到`last`(不包括`last`)的所有元素,并返回一个指向已删除元素之后位置的迭代器。
以下是一个使用`vector.erase`函数的示例:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
// 删除第三个元素
numbers.erase(numbers.begin() + 2);
// 删除第二个到第四个元素
numbers.erase(numbers.begin() + 1, numbers.begin() + 4);
// 输出剩余元素
for (const auto& number : numbers) {
std::cout << number << " ";
}
return 0;
}
```
运行结果为:
```
1 5
```
以上是关于C++中`vector.erase`函数的简要介绍,希望能对您有所帮助!如果您有任何其他问题,请随时提问。
c++ vector.erase原理
C++中的vector是一个动态数组,它提供了erase函数用于删除vector中的元素。vector.erase函数的原理如下:
1. erase函数接受一个迭代器参数,用于指定要删除的元素位置。迭代器是指向vector中元素的指针或引用。
2. erase函数会将指定位置的元素从vector中删除,并将后面的元素向前移动,以填补删除的空缺。
3. 删除元素后,vector的大小会减小,因此erase函数会返回一个指向被删除元素之后位置的迭代器。
4. 如果要删除多个连续的元素,可以使用erase函数的重载版本,该版本接受两个迭代器参数,用于指定要删除的元素范围。
下面是一个示例代码,演示了如何使用vector.erase函数删除元素:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 删除第三个元素
vec.erase(vec.begin() + 2);
// 输出删除后的vector
for (int num : vec) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果为:1 2 4 5,第三个元素3被成功删除。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)