Вы можете использовать функтор:
#include <vector>
#include <algorithm>
class StudentAliasComparator
{
public:
bool operator()(const Student* left, const Student* right) const
{
return left->studentAlias() < right->studentAlias();
}
};
void SortVectorOfStudentByAlias(std::vector<Student*>& students)
{
std::sort(students.begin(), students.end(), StudentAliasComparator());
}
Вы также можете использовать лямбду либо из буста, либо из языка (если вы используете C ++ 0x).С синтаксисом C ++ 0x это было бы что-то вроде (не могу проверить, поскольку у меня нет доступа к компилятору C ++, который сейчас поддерживает C ++ 0x):
void SortVectorOfStudentByAlias(std::vector<Student*>& students)
{
std::sort(students.begin(), students.end(),
[](const Student* l, const Student* r) {
return l->studentAlias() < r->studentAlias(); })
}