为STL sort()重载"<"

Ayu*_*wal 1 c++ stl operator-overloading

我创建了一个包含两个long long int类型变量的结构,比如说xy.

我能够sort()通过重载<运算符并基于任何一个变量进行排序来使用STL .

struct point
{
    long long int x, y;
};

bool compare(point lhs, point rhs)
{    
    return lhs.x < rhs.x;
}

sort(point, point + t, compare);
Run Code Online (Sandbox Code Playgroud)

我想要做的是基于的结构排序x,但是当两个桶具有相同的值时,应该首先放置x具有较小y值的桶.我怎样才能做到这一点?

jro*_*rok 5

比较的元组xy:

bool compare(point lhs, point rhs)
{    
    return std::tie(lhs.x, lhs.y) < std::tie(rhs.x, rhs.y);
}
Run Code Online (Sandbox Code Playgroud)

这完全符合你的要求.

参考页面std::tie甚至得到了一个与您正在做的事情基本相同的示例.