C++ vector的erase()方法
时间: 2024-08-15 21:02:20 浏览: 58
c++之vector容器erase操作
5星 · 资源好评率100%
在C++中,`std::vector::erase()`方法用于从向量(vector)中移除元素。它有两个重载版本:一个是只接受迭代器作为参数,另一个是接受起始和结束迭代器范围。基本语法如下:
```cpp
// 删除第一个匹配项
vec.erase(iter);
// 删除从begin到end之间的所有元素
vec.erase(begin, end);
```
其中,`iter`是你想要移除元素的位置,而`begin`和`end`定义了一个区间,表示要删除的一系列连续元素。
引用提到的实际删除操作示例:
```cpp
std::vector<int> vec;
// ... 填充vector
// 删除指定位置的元素
auto posToRemove = vec.begin() + indexToErase;
vec.erase(posToRemove);
// 或者删除一段连续的元素
vec.erase(vec.begin(), vec.begin()+numElementsToRemove);
```
另一种情况是在不希望改变原向量的情况下,先复制不重复的元素到新向量,如引用所示:
```cpp
vector<int> fun(vector<int>& vec) {
vector<int> temp;
for (auto iter = vec.begin(); iter != vec.end(); ++iter) {
auto iter1 = find(vec.begin(), iter, *iter); // 查找元素第一次出现的位置
if (iter == iter1) {
temp.push_back(*iter); // 如果元素唯一,添加到temp
}
}
return temp; // 返回新的无重复元素向量
}
```
在这个`fun`函数中,我们遍历输入向量,如果找到某个元素首次出现的位置与当前迭代器相同,说明这个元素是唯一的,就将其添加到临时向量`temp`中。
阅读全文