在C++中,`std::vector` 并没有直接提供删除所有符合条件元素的成员函数。不过,你可以通过几种方法来实现这个需求。以下是一个示例,展示了如何删除 `std::vector` 中所有满足特定条件的元素。
假设我们有一个 `vector
#include <iostream>
#include <vector>
#include <algorithm> // 引入算法库,因为需要使用 std::remove_if
int main() {
std::vector<int> vec = {1, 5, 10, 3, 7, 12, 4};
// 使用 std::remove_if 算法来“移除”所有小于 10 的元素
// 注意:std::remove_if 实际上并不是删除元素,而是将所有不满足条件的元素移动到vector的起始位置
// 并返回一个指向新逻辑末尾的迭代器
vec.erase(std::remove_if(vec.begin(), vec.end(),
[](int i) { return i < 10; }), // 这是lambda表达式,用于判断元素是否小于10
vec.end()); // erase函数使用这个迭代器来删除“被移动”到末尾的元素
// 输出修改后的vector
for(int n : vec) {
std::cout << n << ' ';
}
return 0;
}
这段代码首先创建了一个包含整数的 `vector`。然后,它使用 `std::remove_if` 算法来查找所有小于 10 的元素,并将它们“移动”到 `vector` 的末尾(实际上,`remove_if` 通过交换元素位置来实现,并不真正删除它们)。最后,`vector::erase` 方法被用来删除从 `remove_if` 返回的迭代器到 `vector::end()` 之间的所有元素,这些元素现在都是不满足条件的元素。
注意,`std::remove_if` 和 `std::remove` 算法并不改变容器的大小,它们只是重新排列元素。要真正删除元素,需要与 `erase` 方法结合使用。