Сортировка списка, содержащего классы, на основе закрытых членов класса

0

У меня есть список, который содержит класс

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??

Теги:
list
debugging
stl

1 ответ

2
Лучший ответ

Вы можете сделать это, добавив в свой класс оператора меньшего размера:

  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);
  • 0
    Как использовать оператор меньше чем?
  • 0
    @Computernerd: Вам не нужно использовать его самостоятельно, как только вы добавите его в свой класс, функция list::sort() будет «просто работать».
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню