1の#include <iostreamの>
2の#include < ストリング >
3の#include <ベクトル>
4の#include <アルゴリズム>
5
6 使用して 名前空間STDを、
7
8 クラス猫{
9 公共:
10 INT ID。
11 文字列名。
12 int型の年齢;
13 キャット(INT I、列 N、int型A){
14 、ID = I。
15 名= N。
16 =年齢A;
17
18である }
19 };
20は
21であり、 / *
22れる その比較関数を実装:
23 形式:
24 BOOL COMPNAME(Obj1と、OBJ2);
25 注:
26 1つの関数は、ブール値を返す必要があります
27 関数が返す場合2.真は、パラメータまたは規格がこの順(即ち、なしスワップ)、すなわち、スワップfalseを返すに順序付けすることを意味
28 ;機能3.ソート(beginIndexパラメータ、endIndexの、COMPNAME)第3パラメータ
29
30 * /
31である BOOL(myCompare * CAT、CAT * B){
32の // 昇順IDにプレス
33は、 IF(A->番号<B-> ID)リターン trueに、
34は 他 IF(A-> ID> B-> ID)リターン falseに、
35 他{
36 // 同じID
37 // 辞書名注文によって
38は、 IF(A-> name.compare(B->名)< 0)リターン trueに、
39 他 IF(A-> name.compare(B->名)> 0)リターン falseに、
40 他{
41である // 年齢によって小から大へ、同じ名前
42は、 IF(A->年齢<B- >年齢)リターン trueに、
43は、 IF(A->年齢> B->年齢)リターン Falseに、
44は 他{
45 // 同じ年齢
46 // trueに戻り
47 リターン trueに;
48 }
49 }
50
51である }
52である }
53が
54である
55 INT 主は、(){
56は、 ベクトル<猫*> Vは、
57である v.push_back(新しい新しい猫(1。 、" ジム"、1。 ));
58 v.push_back(新しい新しい猫(1、" 島"、1 ))。
59 v.push_back(新しい猫(1、" Jimb "、1 ));
60 v.push_back(新しい猫(1、" Jimc "、1 ));
61 v.push_back(新しい猫(1、" J "、1 ))。
62 v.push_back(新しい猫(2、" ジム"、1));
63 v.push_back(新しい猫(2、" Jizzz "、1 ));
64 v.push_back(新しい猫(2、" ジム"、2 ));
65 v.push_back(新しい猫(2、" ジム"、3 ));
66 ソート(myCompare、(V)、終了(V)を開始します)。
67 のために(INT iは= 0 ; I <v.size(); I ++ ){
68 猫* C =V [i]は、
69 coutの<< C-> ID << " " << C->名<< " " << C->年齢<< てendl;
70 }
71
72 }
73
74 / *
75 出力:
76 1 J 1
77 1ジム1
78 1島1
79 1 Jimb 1
80 1 Jimc 1
81 2ジム1
82 2ジム2
83 2ジム3
84 2 Jizzz 1
85
86 * /