1 #include <iostream>
2 #include <assert.h>
3 #include <set>
4 #include <string>
5 using namespace std;
6
7 struct employee
8 {
9 //Member Function
10 public:
11 employee() {} //默認(rèn)構(gòu)造函數(shù)
12 employee(long eID, string e_Name, float e_Salary);
13
14 //Attribute
15 public:
16 long ID; //Employee ID
17 string name; //Employee Name
18 float salary; //Employee Salary
19 };
20
21 //員工類構(gòu)造函數(shù)
22 employee::employee(long eID, string e_Name, float e_Salary)
23 : ID(eID), name(e_Name), salary(e_Salary) {}
24
25 //用于對Set容器排序的函數(shù)對象
26 class KeyComp
27 {
28 public:
29 bool operator() (const employee& A, const employee& B)
30 {
31 return (A.salary < B.salary);
32 }
33 };
34
35
36 //定義一個元素類型為employee、按KeyComp排序的Set容器類型
37 typedef set<employee, KeyComp> EMPLOYEE_SET;
38 //定義MultiSet容器的隨機(jī)訪問迭代器類型
39 typedef set<employee, KeyComp>::iterator EMPLOYEE_IT;
40 //定義MultiSet容器的反向迭代器類型
41 typedef set<employee, KeyComp>::reverse_iterator EMPLOYEE_RIT;
42
43 //函數(shù)功能:正向輸出Set容器對象的所有元素
44 //參數(shù):一個Set容器對象
45 //返回值:無
46 void output_set(EMPLOYEE_SET e)
47 {
48 assert(!e.empty());
49 EMPLOYEE_IT it;
50 for (it = e.begin(); it != e.end(); it++)
51 {
52 cout << (*it).ID << '\t' << (*it).name << '\t' << (*it).salary << endl;
53 }
54 }
55
56 //函數(shù)功能:逆向輸出Set容器對象的所有元素
57 //參數(shù):一個Set容器對象
58 //返回值:無
59 void reverse_output_set(EMPLOYEE_SET e)
60 {
61 assert(!e.empty());
62 EMPLOYEE_RIT rit;
63 for (rit = e.rbegin(); rit != e.rend(); rit++)
64 {
65 cout << (*rit).ID << '\t' << (*rit).name << '\t' << (*rit).salary << endl;
66 }
67 }
68
69 int main(int argc, char* argv[])
70 {
71 EMPLOYEE_SET employees; //聲明一個容器對象
72
73 //下面的三條語句分別構(gòu)造三個employee對象,然后插入MultiSet容器對象employees
74 employees.insert(EMPLOYEE_SET::value_type(100, "huahua", 20000));
75 employees.insert(EMPLOYEE_SET::value_type(101, "jiafeng", 8000));
76 employees.insert(EMPLOYEE_SET::value_type(102, "guangli", 10000));
77
78 //注意下面的兩條語句,因?yàn)槭荢et,不允許有重復(fù)的值,所以兩個employee對象只會有一條加入到Set容器
79 employees.insert(EMPLOYEE_SET::value_type(103, "jiahui", 12000));
80 employees.insert(EMPLOYEE_SET::value_type(103, "jiahui", 12000));
81
82 //正向和逆向輸出Set容器對象的所有元素
83 assert(!employees.empty());
84 cout << "From Head To Tail:" << endl;
85 output_set(employees);
86
87 cout << "From Tail To Head:" << endl;
88 reverse_output_set(employees);
89
90
91 cout << "Set容器對象employees是否為空? " << (employees.empty() ? "TRUE" : "FALSE") << endl;
92 cout << "Set容器對象employees共有" << employees.size() << "個employee對象!" << endl;
93
94 return 0;
95 }
posted on 2009-02-09 16:48
混沌的云 閱讀(687)
評論(0) 編輯 收藏 引用