1 #INCLUDE <iostream>
2 #INCLUDE < 문자열 >
3 #INCLUDE <벡터>
4 #INCLUDE <알고리즘>
5
6 이용한 스페이스 성병;
7
8 클래스 고양이 {
9 대중 :
10 INT ID;
11 문자열 이름;
12 INT 나이;
13 고양이 ( INT I, 문자열 N, INT의 a) {
14 식 I;
15 명 = N;
(16) = 연령 들 a
. (17)
(18)된다 }
. 19 }
(20)는
21 / *
22이된다 : 그 비교 함수 구현
23 : 형식
24 , 부울 compName (OBJ1, OBJ2)
25 : 주
(26) (1) 함수는 불리언 값을 반환해야
27 2. 함수 반환하는 경우를 사실 이는 파라미터 또는 기준이 순서로 (즉, 아무 교환), 즉 교환 false를 반환한다 주문할 것을 의미한다
(28) , 기능 (3) 정렬 (beginIndex의, endIndex에, compName)를 셋째 매개 변수
29
30 * /
31 인 BOOL (myCompare A * CAT, CAT * B) {
32 // 오름차순 ID를 프레스
(33)는 IF (A-> ID <B-> ID) 창 에 해당하는 ,
34은 다른 IF (A-> ID> B-> ID) 창 은 false ;
35 다른 {
36 // 동일한 ID
37 // 전적으로 이름 주문하여
38 인 IF (A-> name.compare (B-> 명) < 0 ) 반환 참 ;
39 다른 IF (A-> name.compare (B-> 명)> 0 ) 창 은 false ;
40 다른 {
41 인 // 나이, 소형 ~ 대형의, 동일한 이름
42 IF (A-> 연령 <B- > 연령) 창 에 해당하는 ,
(43)는 IF (A-> 연령> B-> 연령) 리턴 FALSE로 ,
44은 다른 {
45 // 같은 연령
46 // true로 복귀
(47) 창 에 해당하는 ,
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 정렬 (시작 (V), 단부 (V) myCompare);
67 대 ( INT 난 = 0 ; I <v.size (); 나는 ++ ) {
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 * /