c++ - 对象比较与排序。 C++

标签 c++

我很难理解其他人的代码。 如果有人帮助我,我将非常感激。

假设有一个对象数组: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 有两个不同的属性。

排序是否类似于比较每个属性(vidvlabel)或......?我认为排序应该通过比较特定字段或属性(此处为 vidvlabel)来完成。

但是这段代码与此没有任何关系,看起来它只是比较整个对象。有人可以告诉我这是如何工作的吗?

提前谢谢您。

最佳答案

标准方法:

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/

相关文章:

c++ - 将模板 typedef 作为参数传递给函数模板

c++ - 只是想知道是否有可能丢失数据?

c++ - 菜单项在 gtkmm3 中总是被禁用

c++ - 使用 std::string 调用类方法

c++ - 如何将static_cast转换为变量类型

c++ - 如何取消长时间运行的 QSqlQuery?

c++ - 多种类型的别名模板

c++ - 在C++/Unreal Engine 4中访问不同类中的静态变量

c++ - 计算器返回0值,不能输入双数

c++ - 基于指针或值类型的条件类型