我很难理解其他人的代码。 如果有人帮助我,我将非常感激。
假设有一个对象数组:vpair_list
,并且此vpair_list
具有vpair
类类型。所以,它会是这样的:
class vpair
{
public:
int vid;
int vlabel;
};
bool operator < (const vpair& x, const vpair& y);
vpair* vpair_list;
vpair_list = new vpair[25];
..
sort(vpair_list, vpair_list+j);
据我所知,sort()
比较数组 vpair_list
的每个元素并对它们进行排序。
问题是我无法理解排序是如何工作的,因为对象 vpair
有两个不同的属性。
排序是否类似于比较每个属性(vid
和 vlabel
)或......?我认为排序应该通过比较特定字段或属性(此处为 vid
或 vlabel
)来完成。
但是这段代码与此没有任何关系,看起来它只是比较整个对象。有人可以告诉我这是如何工作的吗?
提前谢谢您。
最佳答案
标准方法:
class vpair
{
public:
int vid;
int vlabel;
};
bool operator < (vpair const& x, vpair const& y)
{
return std::tie(x.vid, x.vlabel) < std::tie(y.vid, y.vlabel);
}
当然,操作者可以是成员(member):
class vpair
{
int vid;
int vlabel;
public:
bool operator < (vpair const& y) const
{
return std::tie(vid, vlabel) < std::tie(y.vid, y.vlabel);
}
};
关于c++ - 对象比较与排序。 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14149629/