在C ++中设置的用户定义数据类型

问题描述 投票:0回答:2

在第一种情况下,代码工作正常,但是在第二种代码中出现错误,唯一的区别是运算符重载'

class first
{
    public:
    int y;
    bool operator < (first t) const
    {
        return (y>t.y);
    }
};
set<first> f;

2。

class first
{
    public:
    int y;
    bool operator < (first t) 
    {
        return (y>t.y);
    }
}; 
set<first> f;
c++ data-structures stl
2个回答
3
投票

std::set的默认比较器是std::set,正如我们在std::less<Key>上看到的那样,它定义:


0
投票

lhs < rhs,与标准库中的大多数其他容器一样,将要求bool operator < (first t)用于其比较功能。 std::set要求强制保持一致性:

© www.soinside.com 2019 - 2024. All rights reserved.