根据类私有成员对包含类的列表进行排序

Posted

技术标签:

【中文标题】根据类私有成员对包含类的列表进行排序【英文标题】:Sort a list containing classes based on class private members 【发布时间】:2013-10-08 02:59:17 【问题描述】:

我有一个包含类的列表

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 的值对列表进行排序吗??

【问题讨论】:

【参考方案1】:

你可以通过在你的类中添加一个小于运算符来做到这一点:

  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);

【讨论】:

如何使用小于运算符?? @Computernerd:你不需要自己使用它,一旦你将它添加到你的类中,list::sort() 函数将“正常工作”。 我如何从大到小而不是从小到大排序?我尝试将运算符: 但它不起作用 只需更改操作员在内部执行的操作 (return civIndex &gt; other.civIndex;)。

以上是关于根据类私有成员对包含类的列表进行排序的主要内容,如果未能解决你的问题,请参考以下文章

如何根据GPA对数组列表进行升序排序? arraylist 包含一个对象数组。 (Java)[重复]

Java子类访问父类的私有成员变量

如何按整数属性对类列表进行排序? [复制]

如何根据自定义所需顺序对包含列表的数组列表进行排序

根据两个或多个值对通用列表进行排序

多继承 与 多重继承