我有一个包含两种数据类型的结构,这两种数据类型实现了小于、大于和等于运算符。我想为我的结构实现低于运算符:
struct number_pair
{
int a;
int b;
bool operator<(const pair& other) const { return ?; }
}
您需要能够使用运算符对结构的多个实例进行排序。该顺序应遵守 a
和 b
。我不想使用 std
以外的库,而且我使用的是 C++98,所以 std::tuple
不可用。
如果两种数据类型只实现小于、大于和等于运算符,是否可以实现我想要的?如果是这样,运算符的实现会是什么样子,否则,您还需要了解哪些数据类型才能实现运算符?
最佳答案
你想要lexicographical comparison .为此有一个 C++ 函数: std::lexicographical_compare
.该算法与用于排序 std::tuple
的算法相同对象。
您可以自己轻松实现(无需 std::lexicographical_compare
),如下所示:
struct pair {
int a;
int b;
bool operator<(const pair& other) const {
return a < other.a || (a == other.a && b < other.b);
}
};
或者,您可以使用 std::pair<int, int>
去做这个。它已经有一个字典顺序 operator<
定义。
关于c++ - 低于结构的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40061941/