Chinaunix首页 | 论坛 | 博客
  • 博客访问: 487133
  • 博文数量: 77
  • 博客积分: 1047
  • 博客等级: 少尉
  • 技术积分: 898
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-25 17:16
文章分类

全部博文(77)

文章存档

2016年(2)

2013年(2)

2012年(33)

2011年(40)

分类:

2012-05-27 03:13:33

//描述:C++ STL 的应用示例

//作者:

//发布日期:2006年3月25日

//文件名:deque.cpp

#include
#include
#include
#include
using namespace std;
 
struct employee
{
//Member Function
public:
 employee(long eID, string e_Name, float e_Salary);
//Attribute
public:
 long ID;                  //Employee ID
 string name;              //Employee Name
 float salary;            //Employee Salary
};
//employee的构造函数
employee::employee(long eID, string e_Name, float e_Salary) : ID(eID), name(e_Name), salary(e_Salary) {}
 
//compare函数是对vector容器中存储的员工资料按工资进行排序的谓词
bool compare(const employee &a, const employee &b)
{
 return (a.salary > b.salary);
}
 
//ga8000函数是判断工资是否大于8000的谓词
bool ga8000(const employee &a)
{
 return (a.salary > 8000);
}
 
 
//定义一个元素类型为employee的deque类型
typedef deque EMPLOYEE_DEQUE;

//定义一个deque类型的随机访问迭代器类型
typedef deque::iterator EMPLOYEE_IT;

//定义一个deque类型的反向迭代器
typedef deque::reverse_iterator REVERSE_EMPLOYEE_IT;

//output_deque函数正向输出deque的所有元素
void output_deque(EMPLOYEE_DEQUE employ)
{
 EMPLOYEE_IT employit;
 for (employit = employ.begin(); employit != employ.end(); employit++)
 {
  cout << (*employit).ID << '\t' << (*employit).name << '\t' << (*employit).salary << endl;
 }
}
 
//reverse_output_deque函数反向输出deque的所有元素
void reverse_output_deque(EMPLOYEE_DEQUE employ)
{
 REVERSE_EMPLOYEE_IT employit;
 for (employit = employ.rbegin(); employit != employ.rend(); employit++)
 {
  cout << (*employit).ID << '\t' << (*employit).name << '\t' << (*employit).salary << endl;
 }
}
 
int main(int argc, char* argv[])
{
   EMPLOYEE_DEQUE employ;      //Create A Empty Queue
   EMPLOYEE_IT employit;       //Create A Random Access Iterator
   //下面四条语句分别构造四个employee对象,并加入到双端队列
   employ.push_back(employee(100, "luojiafeng", 10000));
   employ.push_back(employee(101, "liujie", 8000));
   employ.push_back(employee(102, "zhangshan", 8800));
   employ.push_front(employee(108, "wujiang", 5000));
  
   employ.erase(employ.begin());   //删除队列的首元素
   
  
   //按compare谓词对deque容器对象employ进行排序
   sort(employ.begin(), employ.end(), compare);
   //正向输出deque容器对象employ的所有元素
   output_deque(employ);
   
   //逆向输出deque窗口对象employ的所有元素
   reverse_output_deque(employ);
   
   //统计并输出工资高于8000的人数
   int i = count_if(employ.begin(), employ.end(), ga8000);
       cout << "gong zi gao yu 8000 de you " << i << "wei!" << endl;
       
 return 0;
}

 

 

阅读(998) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~