自分のリストコンテナのために使用されるC ++ STLコンテナは、ソートにデータ型を定義しました

需要;クラスがあり、クラスは昇順、名前で昇順で同じ種類の名前でメンバ変数の名前と年齢を持っており、今Yaoan名。

書式#include <iostreamの> 
の#include <リスト> 
の#include <アルゴリズム>
 使用して 、名前空間STD;
 // 追加のconst読み取り専用、および使用const_iteratorの

クラス人{
 パブリック
    人物(文字列名、int型の年齢){
         この - >名前= 名前;
        この - >年齢= 年齢;
    }
    文字列の名前。
    int型の年齢;
}。
// オーバーロードされた左シフト演算子 
のostream&演算子 <<(のostream&COUTは、Person&P-){
     / * COUT << "名:" << p.name << "" << " 年齢" << p.age ; * / 
    リターンCOUT。
}
 printPerson(constのリスト<人>&P){
     のためには、(リストは、<人> :: const_iteratorのそれはp.beginを()=;!それ= p.end();それ++ ){
        裁判所未満 << " 姓名:" <<(*それ).nameの<< " \トン" << " 年龄:" <<(*それ).age << てendl;
    }
}
BOOL myCompare(P1&人、人&P2){
     // 同じ年齢の場合
    IF(p1.age == p2.age){
         リターン p1.name < p2.name。
    }
    リターン p1.age < p2.age。
}

ボイド試験(){
    リスト <人> LST。
    人物P1(" トム"12 );
    人物P2(" ジャック"12 );
    人物P3(" シム"16 );
    人物P4(" マイク"14 );
    人物P5(" ボブ"11 );
    人物P6(" "11 );
    lst.push_back(P1)。
    lst.push_back(P2)。
    lst.push_back(P3)。
    lst.push_back(P4)。
    lst.push_back(P5)。
    lst.push_back(P6)。
    裁判所未満 << " ご注文の前に:" << てendl;
    printPerson(LST)。
    lst.sort(myCompare)。
    裁判所未満 << " 並べ替え:" << てendl;
    printPerson(LST)。
}
INT メイン(){
    テスト();
    システム(一時停止)。
    リターン 0 ;
}

出力:

 

 同時に、名前の最初の文字は年齢段階の昇順のオーダーである一方で、年齢は、昇順であることが判明しています。

おすすめ

転載: www.cnblogs.com/xiximayou/p/12112009.html