(3)有以下数字:11,12,13,2,3,4,5,6,7,16,17,18.
将以上数据依次压入(push_back)容器deque中,
选用一种排序算法排序后,连续弹出5个数据(pop_front)后,
将以上数据依次压入(push_back)容器deque中,
选用一种排序算法排序后,连续弹出5个数据(pop_front)后,
采用for_each对剩余数据进行累加并输出。
#include <deque>
#include <map>
#include <iostream>
#include <algorithm>
#include <numeric>
using namespace std;
class allsum{
private:
int sum;
//构造函数
public :
allsum():sum(0){}
void operator() (int& elem){//使用引用,改变容器的值
elem += sum;//计算累加和
sum = elem;
}
//返回值
operator int(){
return sum;
}
};
int main(){
int data[12] = {11,12,13,2,3,4,5,6,7,16,17,18};//原始数据
int time = 5;//弹出数据个数
int sum = 0;//累加和
deque<int > ideque;//容器
deque<int>::iterator idequepos;//对应的迭代器
//把数据依次加入到容器
for(int i = 0;i<12;i++)
ideque.push_back(data[i]);
//输出 原始数据
copy(ideque.begin(),ideque.end(),ostream_iterator<int >(cout," "));
cout<<endl;
//选用快排进行排序,从大到小
sort(ideque.begin(),ideque.end(),greater<int >());
//输出排序后的序列
cout<<"sorted: ";
copy(ideque.begin(),ideque.end(),ostream_iterator<int >(cout," "));
cout<<endl;
//连续弹出5个数据
while(time--)
ideque.pop_front();
//输出弹出数据后的序列
cout<<"pop_front(): ";
copy(ideque.begin(),ideque.end(),ostream_iterator<int >(cout," "));
cout<<endl;
//计算序列的累加和 (使用accumulate())
cout<<"accumulate: ";
cout<<accumulate(ideque.begin(),ideque.end(),0)<<endl;
//使用for_each()计算累加和
sum = for_each(ideque.begin(),ideque.end(),allsum());
//输出处理后的序列
cout<<"for_each() ";
copy(ideque.begin(),ideque.end(),ostream_iterator<int >(cout," "));
//输出累加和
cout<<sum<<endl;
getchar();
return 0;
}
示例结果: