std vector erase
时间: 2024-02-25 20:50:21 浏览: 110
在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()函数删除该元素,并将迭代器递减以确保正确的迭代。
相关问题
std::vector erase如何使用
`std::vector_erase`是C++标准库中的一个成员函数,用于从`std::vector`容器中移除元素。其基本语法如下:
```cpp
void erase(Iterator position);
void erase(Iterator first, Iterator last);
```
这里有两种用法:
1. 单个元素移除:
当你想删除指定位置(索引)的元素时,你可以传递迭代器指向该元素的位置:
```cpp
iterator it = your_vector.begin(); // 获取起始迭代器
your_vector.erase(it + index_to_remove); // 删除第index_to_remove个元素
```
2. 范围移除:
如果你知道要删除的一段连续元素的范围,可以提供两个迭代器,分别指向开始和结束位置:
```cpp
your_vector.erase(first_iterator, last_iterator); // 移除[first_iterator, last_iterator)之间的所有元素
```
注意,`erase`不会改变迭代器的值,所以如果你想更新其他元素的索引,你需要相应地调整它们。
vector erase
vector erase函数用于在vector中删除元素。它有两种使用方式:
1. 删除单个元素:可以使用迭代器来指定要删除的元素位置,然后调用erase函数进行删除。例如:
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5};
auto it = vec.begin() + 2; // 删除第三个元素
vec.erase(it);
```
2. 删除一段元素:可以使用迭代器指定要删除的范围,从开始迭代器到结束迭代器之间的元素都会被删除。例如:
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5};
auto start = vec.begin() + 1; // 删除第二个到第四个元素
auto end = vec.begin() + 4;
vec.erase(start, end);
```
在上述示例中,调用erase函数后,vector中相应的元素将被删除。请注意,erase函数会导致后续元素向前移动以填补空缺。
阅读全文