考虑以下场景:
bool is_odd(int i)
{
return (i % 2) != 0;
}
int main()
{
// ignore the method of vector initialization below.
// assume C++11 is not to be used.
std::vector<int> v1 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
std::vector<int> v2 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
// removes all odd numbers, OK
v1.erase( std::remove_if(v1.begin(), v1.end(), is_odd), v1.end() );
// remove all even numbers
v2.erase( std::remove_if(v2.begin(), v2.end(), ???), v2.end() );
}
我可以使用相同的is_odd()
UnaryPredicate 来删除最后一行中预期的偶数吗main()
?或者我是否必须写一个is_even()
,即使它只是:
bool is_even(int i)
{
return !is_odd(i);
}