c++中erase函数用法
时间: 2025-08-14 19:39:00 浏览: 22
### C++ 中 `erase` 函数的使用方法
在 C++ 的标准模板库(STL)中,容器类提供了成员函数 `erase` 来移除元素。不同的 STL 容器有不同的 `erase` 方法实现方式。
对于向量 (`std::vector`) 和列表 (`std::list`) 这样的序列式容器而言,`erase` 可以通过迭代器或者范围来指定要删除的一个或多个元素[^1]:
#### 使用单个迭代器参数
此形式用于从容器中移除由给定迭代器指向的那个单一元素。
```cpp
#include <iostream>
#include <vector>
int main(){
std::vector<int> vec{1, 2, 3};
auto it = vec.begin();
++it;
vec.erase(it); // 移除了第二个元素
for(auto& elem : vec){
std::cout << elem << " ";
}
}
```
#### 使用两个迭代器作为参数表示区间
该版本允许一次性清除位于一对迭代器之间的所有项。
```cpp
#include <iostream>
#include <vector>
int main(){
std::vector<int> vec{0, 1, 2, 3, 4};
vec.erase(vec.begin(), vec.end()-1);
for(const auto& item : vec){
std::cout << item << "\n";
}
}
```
当涉及到关联式容器如集合(`set`) 或映射表(`map`)时,则通常依据键值来进行擦除操作:
```cpp
#include <iostream>
#include <unordered_map>
int main(){
std::unordered_map<std::string,int> myMap={
{"apple",1},{"banana",2},{"orange",3}};
size_t n=myMap.erase("banana"); // 返回被删去的数量,在这里是1
if(n==1){
std::cout<<"Element found and erased.\n";
}else{
std::cout<<"No such element exists.\n";
}
}
```
值得注意的是,一旦调用了 `erase()` ,传入的任何迭代器都会失效;因此不应再尝试访问这些已过期的迭代器所指代的位置。
阅读全文
相关推荐




















