std::remove_if 使用方法
时间: 2023-10-31 08:04:52 浏览: 36
`std::remove_if` 是 STL 中的一个算法函数,用于移除容器中满足特定条件的元素。它的使用方法如下:
```c++
template<class ForwardIt, class UnaryPredicate>
ForwardIt remove_if(ForwardIt first, ForwardIt last, UnaryPredicate p);
```
其中 `first` 和 `last` 是要移除元素的容器的范围,`p` 是一个一元谓词,用于判断元素是否需要被移除。该函数返回值是移除后的新的容器范围的末尾迭代器。
例如,下面的代码演示了如何使用 `std::remove_if` 移除一个 `vector` 中的所有偶数:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> v = {1, 2, 3, 4, 5, 6};
auto new_end = std::remove_if(v.begin(), v.end(), [](int n) { return n % 2 == 0; });
v.erase(new_end, v.end());
for (auto n : v) {
std::cout << n << " ";
}
std::cout << std::endl;
return 0;
}
```
输出:
```
1 3 5
```
注意,`std::remove_if` 并不会真正地删除元素,而是将要删除的元素移到了容器的末尾,并返回指向新的末尾迭代器。因此,需要使用容器的 `erase` 函数来真正删除这些元素。