2013-11-23 68 views
3

當前我正在嘗試基於特定字段對結構向量排序。我爲使用排序功能設置了自定義比較函數。但是,我收到了一些錯誤。對基於特定字段的結構向量排序

代碼:

struct Play{ 
     int min, down, yard, locat; 
     string Description, offname, defname; 
     double relevance; 
    }; 

    bool customCompare(const Play &x, const Play &y) 
    { 
     return (x.relevance < y.relevance); 
    } 

    void printResults() 
    { 
     sort(vecData.begin(),vecData.end(), customCompare); 
    }` 

錯誤:

error C3867: 'List::customCompare': function call missing argument list; use '&List::customCompare' to create a pointer to member 
    error C2780: 'void std::sort(_RanIt,_RanIt)' : expects 2 arguments - 3 provided 
+2

製作'customCompare'靜態的。 –

+0

謝謝@KerrekSB,工作! – Rob

回答

4

一)具有如下拉姆達符號使用排序功能(如果你使用的是C++ 11)

sort(vecData.begin(),vecData.end(), [](const Play &x, const Play &y){ return (x.relevance < y.relevance);}); 

作業編號:

http://ideone.com/bDOrBV

B)使比較器功能爲靜態

http://ideone.com/0HsaaH

2
static bool customCompare(const Play &x, const Play &y)