在類中定義sort的比較函數

在類中定義sort的比較函數

我聲明瞭一個類,類中成員函數調用了二維vector參數:candidate_set,代碼如下:

class StarIdentify
{
public:
    StarIdentify(void);
    ~StarIdentify(void);
    double Identify_Basis_Pair();   
private: ;
    //升序函數
    bool LessSort (vector<double> a,vector<double> b);
    vector<vector<double>> candidate_set;
};

升序函數定義如下:

bool StarIdentify::LessSort (vector<double> a,vector<double> b) 
{ return a[0]<b[0]; }

想在函數Identify_Basis_Pair中調用vector的比較函數

sort(candidate_set.begin(),candidate_set.end(),LessSort);

但編譯會出錯,提示LessSort缺少兩個參數。

解決方式如下
聲明爲靜態成員函數:

class StarIdentify
{
public:
    StarIdentify(void);
    ~StarIdentify(void);
    double Identify_Basis_Pair();   
private: ;
    //升序函數
    bool static LessSort (vector<double> a,vector<double> b);
    vector<vector<double>> candidate_set;
};

這樣調用就可以了:

sort(candidate_set.begin(),candidate_set.end(),StarIdentify::LessSort);

相關帖子

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章