c++ - 低于结构的运算符

标签 c++ struct c++98

我有一个包含两种数据类型的结构,这两种数据类型实现了小于、大于和等于运算符。我想为我的结构实现低于运算符:

struct number_pair
{
    int a;
    int b;
    bool operator<(const pair& other) const { return ?; }
}

您需要能够使用运算符对结构的多个实例进行排序。该顺序应遵守 ab。我不想使用 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/

相关文章:

C++ 重写一个文件,但在一个词之前遗漏了所有内容

c++ - 用于 BLE 的 BluezV5.42 DBUS C API?

c++ - 显示一个三维结构数组

c++ - 如何将结构定义为结构的成员?

c++ - 在 GCC、Clang 和 MSVC 中,有什么方法可以符合 C++98 而不是 C++03 吗?

c++ - cudaMallocManaged()是否在RAM和VRAM中创建同步缓冲区?

c++ - 这个程序的输出是什么?

c - 结构成员可能未初始化

c++ - __cplusplus 扩展最小值

c++ - g++4.4 c++98 目标文件是否与 g++4.8 c++11 兼容?