【发布时间】:2011-06-07 09:12:43
【问题描述】:
我有这门课
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 lambda(我对 lambda 不是很熟悉)?
【问题讨论】: