У меня есть список, который содержит класс
list<PointTwoD> point
Это мое объявление моего класса
class PointTwoD:public locationdata
{
public:
PointTwoD();
PointTwoD(string,int,int,float,float,int,int);
void set_x(int);
int get_x();
void set_y(int);
int get_y();
void set_civIndex(float);
float get_civIndex();
friend class MissionPlan;
private:
int x;
int y;
float civIndex;
};
Я пытаюсь сортировать список на основе частного члена civIndex. Я попытался вызвать функцию сортировки в списке, но он не работает. Может кто-нибудь посоветует мне, как я сортирую список на основе значения частного члена civIndex??
Вы можете сделать это, добавив в свой класс оператора меньшего размера:
bool operator<(const PointTwoD& other) const
{
return civIndex < other.civIndex;
}
Если вам не нужен общий оператор меньшего размера, но все же нужно сортировать список, вы можете предоставить функцию сравнения, которая делает то же самое:
bool compare_PointTwoD(const PointTwoD& first, const PointTwoD& second)
{
return first.get_civIndex() < second.get_civIndex();
}
И вызовите вид вроде этого:
std::list<PointTwoD> lpt;
lpt.sort(compare_PointTwoD);
list::sort()
будет «просто работать».