У меня есть этот класс
class Point2D
{
public:
bool isValid();
// ...
private:
double x_, y_;
};
У меня есть std :: vector < Point2D>
и я хотел бы удалить недопустимые точки, теперь мне нравится это:
bool invalid ( const Point2D& p )
{
return !p.isValid();
}
void f()
{
std::vector< Point2D > points;
// fill points
points.erase( std::remove_if( points.begin(), points.end(), invalid ), points.end() );
// use valid points
}
Есть ли стандартный способ сделать это (красиво), например, без необходимости «дублировать» функциональность класса метод Point2D :: isValid
?
Может быть, использовать лямбда-выражение C ++ 11 (я не очень знаком с лямбда-выражением)?