std::remove_if用法介绍
时间: 2023-10-16 11:11:00 浏览: 79
C++_String2[1]
`std::remove_if` 是 C++ 标准库中的一个算法函数,可以用于移除容器中符合特定条件的元素。
它的函数原型如下:
```cpp
template< class ForwardIt, class UnaryPredicate >
ForwardIt remove_if( ForwardIt first, ForwardIt last, UnaryPredicate p );
```
其中,`first` 和 `last` 分别指向容器中要进行移除操作的元素的起始位置和结束位置,`p` 是一个一元谓词函数,用于判断某个元素是否需要被移除。
`std::remove_if` 的工作原理是,从 `first` 到 `last` 遍历容器中的元素,对于每个元素,如果 `p` 返回 true,就将该元素移动到容器的末尾,并将移动后的元素个数返回;否则,该元素保留在原位,继续遍历容器中的下一个元素。最终,返回值是指向最后一个未移除元素之后的位置的迭代器,可以使用容器的 erase 函数将这些元素实际地从容器中删除。
下面是一个示例代码,用于从一个 vector 容器中移除所有偶数元素:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
vec.erase(std::remove_if(vec.begin(), vec.end(), [](int x) { return x % 2 == 0; }), vec.end());
for (auto x : vec) {
std::cout << x << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果为:
```
1 3 5 7 9
```
可以看到,所有偶数元素都被移除了。注意,在调用 `std::remove_if` 后,需要再调用一次容器的 erase 函数才能实际地将元素从容器中删除。
阅读全文