【VC开源代码栏目提醒】:网学会员为广大网友收集整理了,algorithm.cpp,希望对大家有所帮助!
// algorithm.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream.h>
#include <algorithm>
#include <functional>
#include <deque>
using namespace std;
typedef deque<int> TestDeque;
typedef TestDeque::iterator TestDequeIt;
void OutputDeque (TestDeque deque, char*);
void OutputDeque_remove (TestDeque deque, char*,int val);
int main()
{
TestDequeIt begin,end,last;
//创建b双队列
TestDeque b;
b.push_back(1);
b.push_back(2);
b.push_back(3);
b.push_back(4);
b.push_back(5);
b.push_back(6);
b.push_back(7);
//创建长度等于b双队列的a双队列
TestDeque a(8);
//输出结果
cout<<"初始情况下的队列a,b:"<<endl;
OutputDeque (b,"b");
//获取b队列的第一个元素
begin = b.begin() ;
//获取b队列的最后一个元素
end = b.end() ;
//********************使用remove删除队列中所有等于3的元素
cout<<endl<<"删除队列中所有等于3的元素"<<endl;
OutputDeque_remove(b,"b",3);
OutputDeque (b,"b");
//********************使用remove_if删除b队列中所有小于4的元素
last = remove_if(begin, end, bind2nd(less_equal<int>(), 4) ) ;
cout << endl<<"删除b队列中所有小于4的元素" << endl ;
TestDequeIt mydeque;
cout <<"b双队列使删除条件为真的元素为 : ";
for(mydeque = begin; mydeque !=last;mydeque++)
{
cout << *mydeque <<" " ;
}
cout<<endl;
//remove_if将队列中不符合删除条件的元素移到队列的起始处,队列的大小并不会改变
//显示执行删除操作后的b队列
OutputDeque (b,"b");
//*****************使用remove_copy将b双队列中所有不等于7的元素复制到a双队列中
//注意使用remove_copy时,必须指明目的队列的长度,而且该长度不能小于源队列中符合删除条件的元素的个数。
TestDequeIt aIt;
aIt = a.begin();
cout<<endl<<"b双队列中所有不等于7的元素复制到a双队列中"<<endl;
last = remove_copy(begin,end,aIt, 7) ;
//显示b队列;
OutputDeque (b,"b");
//显示执行remove_copy操作后的a队列
OutputDeque (a,"a");
//********************
cout<<endl<<"b双队列中所有大于等于5的元素复制到a双队列中"<<endl;
last = remove_copy_if(begin, end,aIt,bind2nd(greater_equal<int>(), 5)) ;
//显示执行remove_copy操作后的a队列
OutputDeque (a,"a");
}
//显示使删除条件为真的元素双队列内容
void OutputDeque_remove(TestDeque deque, char *name,int val)
{
//创建一个迭代器
TestDequeIt mydeque;
TestDequeIt last;
//删除符合删除条件的元素
last=remove(deque.begin(), deque.end(), val) ;
cout <<"双队列"<< name <<"的使删除条件为真的元素为 : ";
for(mydeque = deque.begin(); mydeque !=last;mydeque++)
{
cout << *mydeque <<" " ;
}
cout<<endl;
}
//显示双队列内容
void OutputDeque (TestDeque deque, char *name)
{
//创建一个迭代器
TestDeque::iterator mydeque;
cout <<"双队列"<< name <<"的内容为 : ";
for(mydeque = deque.begin(); mydeque != deque.end();mydeque++)
{
cout << *mydeque <<" ";
}
cout<<endl;
}
上一篇:
AlertDlg.cpp
下一篇:
密切医患护患关系,开展健康教育