【问题标题】:C++ struct sorting errorC++结构排序错误
【发布时间】:2010-04-28 08:36:51
【问题描述】:

我正在尝试在 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());

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

这个错误是什么意思?

谢谢

【问题讨论】:

  • 顺便说一句,您的工具链(编译器/库)是什么?我很好奇哪个能识别这种错误。
  • 我使用 VS 2008 .. 我认为认识到这个异常意味着它在运行时做了更多的工作,因此它在运行时间方面效率较低.. 对吗?
  • @jpalecek:Dinkumware 在他们的库中对此类内容进行了一些健全性检查。

标签: c++ struct sorting functor


【解决方案1】:

sort 需要一个返回 bool 的函数,如果 lhs 位于 rhs 之前,则为真:

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

还要注意const Book&amp;参数的变化,避免复制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    相关资源
    最近更新 更多