2011-12-09 6 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

一つの簡単な方法は、あなたのSeminarクラスのoperator<()を実装することです。デフォルト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(); 
    } 
};