}
bool operator == (const Iterator & it)const
{
return position_ == it.position_;
}
bool operator != (const Iterator & it)const
{
return position_ != it.position_;
}
private:
Table * table_;
int position_;
};
public:
Iterator begin()
{
return Iterator(this, BEGIN_SEAT);
}
Iterator end()
{
return Iterator(this, INVALID_SEAT);
}
};
bool FindNullSeat(Seat * seat)
{
return seat->no_ == 3;
}
int main(int , char **)
{
Table table;
Table::Iterator seat = std::find_if(table.begin(), table.end(), FindNullSeat);
return 0;
}