2011-12-09 46 views
0

所以我嘗試了所有類型的組合,但我想排序矢量的標題,我無法找到他們我的問題是我如何得到與標題一起工作的排序?在STL程序內排序的C++幫助

class Seminar 

    public: 

     Seminar(int number = 0, string date = "yyyy-mm-dd" , string title = "") 
     { 
      Number = number; 
      Date = date; 
      Title = title; 
     } 

     int get_number() const {return Number; } 
     string get_date() const {return Date; } 
     string get_title() const {return Title; } 

    private: 
     int Number;  // Seminar number 
     string Date;  // Date of Seminar 
     string Title; // Title of Seminar 
} 

爲了讓長話短說,程序將讀取文件並將信息推送到矢量中。例如:

Seminar s(integers, calendar, line); 

      All.push_back(s); 






vector<Seminar> All; 

vector<Seminar>::iterator it; 


    if(Letter == "F" || Letter == "f") 
     { 
     sort(All.begin(), All.end(), ??); 
     for(it = All.begin(); it != All.end(); it++) 
      { 

       cout << it->get_title() << endl; 
      } 

     } 
+0

您應該瞭解構造函數初始值設定項列表。 –

回答

2

一個簡單的方法是實施operator<()Seminar類;那麼默認sort算法將使用它,做正確的事情,這樣的事情應該工作:

bool operator<(const Seminar &s1, const Seminar &s2) { 
    return s1.get_title() < s2.get_title(); 
} 
+0

謝謝,我已經用了一分鐘之前,你回覆 – user1072583

+0

酷,你仍然可以按「接受」! –

0

類似以下是做到這一點的方法之一。您將不得不使用Sortfunc作爲排序函數謂詞。

class Sortfunc : public std::binary_function<Seminar, Seminar, bool> 
{ 

public: 

    bool operator()(Seminar lhs, Seminar rhs) 
    { 
     // use '<' to sort ascending 
     // use '>' to sort descending 
     return lhs.get_title() < rhs.get_title(); 
    } 
};