vector erase返回
时间: 2023-08-18 12:14:28 浏览: 49
引用\[3\]中提到,erase()函数用于在顺序型容器中删除容器的一个元素,有两种函数原型,c.erase(p), c.erase(b,e)。第一个删除迭代器p所指向的元素,第二个删除迭代器b,e所标记的范围内的元素,c为容器对象,返回值都是一个迭代器,该迭代器指向被删除元素后面的元素。所以,vector erase函数返回的是一个迭代器,指向被删除元素后面的元素。
#### 引用[.reference_title]
- *1* *2* *3* [【C++】vector中erase用法](https://blog.csdn.net/Vcrossover/article/details/106243627)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
相关问题
vector erase
vector erase 是 C++ STL 中 vector 容器的一个成员函数,用于删除 vector 中的元素。它有两种形式:
1. iterator erase(iterator position);
这种形式接受一个迭代器参数 position,表示要删除的元素的位置。该函数返回一个迭代器,指向被删除元素的下一个元素。
例如:
```
std::vector<int> vec{1, 2, 3, 4, 5};
auto it = vec.erase(vec.begin() + 2);
// 删除第三个元素,即数字3
// vec 变成{1, 2, 4, 5}
// it 指向数字4
```
2. iterator erase(iterator first, iterator last);
这种形式接受两个迭代器参数 first 和 last,表示要删除元素的范围。该函数返回一个迭代器,指向被删除元素的下一个元素。
例如:
```
std::vector<int> vec{1, 2, 3, 4, 5};
auto it = vec.erase(vec.begin() + 1, vec.begin() + 4);
// 删除第二个到第四个元素,即数字2、3、4
// vec 变成{1, 5}
// it 指向数字5
```
注意:
- erase 函数会改变 vector 的大小,因此要注意迭代器的失效问题;
- 对于使用 erase 删除元素的操作,最好使用迭代器而不是下标,因为 erase 操作可能会导致迭代器失效,而下标则不会。
std vector erase
在C++中,std::vector::erase()函数用于从vector容器中删除一个或多个元素。它的原型如下[^1]:
```cpp
iterator erase (const_iterator position);
iterator erase (const_iterator first, const_iterator last);
```
- 第一个版本的erase()函数接受一个迭代器参数,用于指定要删除的元素的位置。它返回一个指向被删除元素之后元素的迭代器。
- 第二个版本的erase()函数接受两个迭代器参数,用于指定要删除的元素的范围。它返回一个指向被删除元素之后元素的迭代器。
以下是一个使用std::vector::erase()函数删除vector中满足特定条件的元素的示例[^2]:
```cpp
std::vector<CoreUser>::iterator ite = v.begin();
for (; ite < v.end(); ite++) {
if (ite->cost < 24.0) {
v.erase(ite--);
}
}
```
在上述示例中,我们遍历vector中的元素,如果元素的cost小于24.0,则使用erase()函数删除该元素,并将迭代器递减以确保正确的迭代。
相关推荐
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![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_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)
![](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)