Интересно, есть ли поддержка в STL для этого:
Скажем, у меня есть класс вроде этого:
class Person
{
public:
int getAge() const;
double getIncome() const;
..
..
};
и вектор:
vector<Person*> people;
Я хотел бы отсортировать вектор людей по их возрасту: Я знаю, что могу сделать это следующим образом:
class AgeCmp
{
public:
bool operator() ( const Person* p1, const Person* p2 ) const
{
return p1->getAge() < p2->getAge();
}
};
sort( people.begin(), people.end(), AgeCmp() );
Есть ли менее верный способ сделать это? Кажется, слишком сложно определить целый класс только потому, что я хочу сортировать на основе "атрибута". Что-то вроде этого может быть?
sort( people.begin(), people.end(), cmpfn<Person,Person::getAge>() );