📅  最后修改于: 2023-12-03 14:39:50.663000             🧑  作者: Mango
C++ STL中提供了很多算法函数,其中remove_copy_if()函数是一种常用的算法函数,用于将符合条件的元素从源区间[begin,end)拷贝到另外一个区间[result,result+old_size-new_size)中。
template< class InputIt, class OutputIt, class UnaryPredicate >
OutputIt remove_copy_if( InputIt first, InputIt last, OutputIt d_first, UnaryPredicate p );
返回值:指向目标区间的末尾迭代器。
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
bool isOdd(int i) {
return ((i%2)==1);
}
int main() {
vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9};
vector<int> v2(v.size());
auto it = remove_copy_if(v.begin(), v.end(), v2.begin(), isOdd);
v2.resize(distance(v2.begin(), it));
cout<<"v: ";
for(auto i:v) {
cout<<i<<" ";
}
cout<<"\nv2: ";
for(auto i:v2) {
cout<<i<<" ";
}
return 0;
}
输出结果为:
v: 1 2 3 4 5 6 7 8 9
v2: 2 4 6 8