2010-04-28 112 views
3

我試圖在C++中的自定義結構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()); 

它給了我例外「無效運營商<」

這個錯誤是什麼意思?

感謝

+0

順便說一句你的工具鏈(編譯器/庫)是什麼?我很好奇哪些確認了這種錯誤。 – jpalecek 2010-04-28 08:49:12

+0

我使用VS 2008 .. 我認爲認識到這個異常意味着它在運行時做了更多的工作,所以它的效率低於運行時間..我是對嗎? – Betamoo 2010-04-28 09:19:25

+0

@jpalecek:Dinkumware在他們的圖書館中對這類東西進行了一些理智檢查。 – sbi 2010-04-28 12:22:49

回答

11

sort預計返回bool的功能,這是真的當且僅當LHS之前的RHS:

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

還要注意改變const Book&參數,以避免複製。