vector.erase用法
时间: 2023-12-13 19:33:53 浏览: 82
`std::vector::erase`是C++标准库中的一个方法,用于从vector中删除指定的元素。其基本用法如下:
```cpp
std::vector<int>::iterator erase(const_iterator position);
```
或者
```cpp
void erase(const_iterator first, const_iterator last);
```
第一个版本删除一个元素,第二个版本删除一个范围。这些方法都返回一个指向被删除元素之后的元素的迭代器。注意,对于指向元素开始和结束的迭代器,通常定义为常量(即它们是不可变的),这就是为什么这里使用了`const_iterator`的原因。
下面是`erase`的用法和实例:
1. **删除一个元素**:
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5};
vec.erase(vec.begin() + 2); // 删除索引为2的元素(即3)
```
2. **删除一个范围的元素**:
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5};
vec.erase(vec.begin() + 2, vec.begin() + 4); // 删除索引为2和3的元素(即3和4)
```
请注意,被删除的元素会被移动到vector的末尾,所以它们的索引不会改变。也就是说,如果一个元素被删除,它原来的位置将会是下一个元素的空位。因此,如果你需要保留这些被删除元素的引用或指针,那么你需要在删除它们之前保存这些引用或指针。
此外,你还可以使用`std::vector::clear`方法来清除vector中的所有元素,但是这不会改变vector的大小。
希望这个回答对你有所帮助!如果你有任何其他问题,欢迎继续提问。
阅读全文