C++ 结构体排序错误

2023-12-30

我正在尝试对 C++ 中的自定义结构向量进行排序

struct Book{
public:int H,W,V,i;
};

用一个简单的函子

class CompareHeight
{
public:
    int operator() (Book lhs,Book rhs)
    {
        return lhs.H-rhs.H; 
    }
};

尝试时:

vector<Book> books(X);
.....
sort(books.begin(),books.end(), CompareHeight());

它给了我异常“无效的运算符

这个错误是什么意思?

Thanks


sort期望有一个返回的函数bool,当且仅当左侧先于右侧时,这是正确的:

bool operator() (const Book& lhs, const Book& rhs)
{
    return lhs.H < rhs.H; 
}

另请注意更改为const Book&参数,避免复制。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 结构体排序错误 的相关文章

随机推荐