std::vector 删除指定元素
时间: 2025-06-16 12:20:25 浏览: 15
### 如何使用 `std::vector` 删除指定元素的方法及代码示例
在 C++ 中,`std::vector` 提供了多种方法来删除指定元素。以下是几种常见的删除方式及其代码示例。
#### 1. 使用 `erase` 方法删除单个元素
`std::vector` 的 `erase` 方法可以用来删除容器中的单个元素或范围内的元素。以下是一个删除指定索引位置元素的示例:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 删除索引为2的元素(即值为3的元素)
if (vec.size() > 2) {
vec.erase(vec.begin() + 2);
}
// 输出结果
for (const auto& elem : vec) {
std::cout << elem << " ";
}
std::cout << std::endl;
return 0;
}
```
上述代码中,`vec.erase(vec.begin() + 2)` 删除了索引为 2 的元素[^1]。
#### 2. 使用 `erase` 方法删除特定值的所有匹配项
如果需要删除所有等于某个特定值的元素,可以结合 `std::remove` 和 `erase` 方法实现。以下是一个示例:
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 引入 std::remove
int main() {
std::vector<int> vec = {1, 2, 3, 4, 3, 5};
// 删除所有值为3的元素
vec.erase(std::remove(vec.begin(), vec.end(), 3), vec.end());
// 输出结果
for (const auto& elem : vec) {
std::cout << elem << " ";
}
std::cout << std::endl;
return 0;
}
```
这里,`std::remove` 将所有值为 3 的元素移动到容器的末尾,并返回一个指向新末尾的迭代器。随后,`erase` 方法删除从该迭代器到容器末尾的所有元素[^2]。
#### 3. 使用 `erase` 方法删除范围内的元素
如果需要删除某个范围内的元素,可以直接传递两个迭代器给 `erase` 方法。以下是一个示例:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5, 6};
// 删除索引2到索引4之间的元素(不包括索引4)
if (vec.size() >= 4) {
vec.erase(vec.begin() + 2, vec.begin() + 4);
}
// 输出结果
for (const auto& elem : vec) {
std::cout << elem << " ";
}
std::cout << std::endl;
return 0;
}
```
上述代码中,`vec.erase(vec.begin() + 2, vec.begin() + 4)` 删除了从索引 2 到索引 3 的元素。
### 注意事项
- 调用 `erase` 方法后,被删除元素之后的所有元素的迭代器和引用都将失效。
- 如果需要频繁插入或删除元素,可以考虑使用其他容器如 `std::list`,因为 `std::vector` 在删除元素时可能需要移动大量数据[^3]。
阅读全文
相关推荐


















