В своей программе создаю STL-вектор из указателей на структуру:
struct MyClass {
int x;
};
std::vector<MyClass *> m_vecMyClasses;
Возникла необходимость отсортировать m_vecMyClasses по значению х.
std::sort(m_vecMyClasses.begin(), m_vecMyClasses.end(), ...)
Похоже третьим параметром должна идти процедура сравнения, но как правильно описать ее прототип.
Или же требуется перегрузить оператор <. В моем варианте это представляется, как:
bool operator<(const MyStruct* & ms1, const MyStruct * & ms2))
{
return ms1.x < ms2.x;
}
Но это не компилится.
Или же в принципе правильнее все-таки создавать std::vector<MyClass> m_vecMyClasses, но тогда придется определять для MyClass конструктор по умолчанию и это уже будет не чистая структура.
Подскажите пожалуйста, в каком направлении двигаться?