相关疑难解决方法(0)

为结构定义operator <

我有时structs在地图中使用小键作为键,因此我必须operator<为它们定义一个.通常,这最终看起来像这样:

struct MyStruct
{
    A a;
    B b;
    C c;

    bool operator<(const MyStruct& rhs) const
    {
        if (a < rhs.a)
        {
           return true;
        }
        else if (a == rhs.a)
        {
            if (b < rhs.b)
            {
                return true;
            }
            else if (b == rhs.b)
            {
                return c < rhs.c;
            }
        }

        return false;
    }
};
Run Code Online (Sandbox Code Playgroud)

这看起来非常冗长且容易出错.有没有更好的方法,或一些简单的方法来自动定义operator<一个structclass

我知道有些人喜欢使用类似的东西memcmp(this, &rhs, sizeof(MyStruct)) < 0,但是如果成员之间存在填充字节,或者如果char在null终止符之后存在可能包含垃圾的字符串数组,则这可能无法正常工作.

c++ operator-overloading

56
推荐指数
5
解决办法
6万
查看次数

标签 统计

c++ ×1

operator-overloading ×1