deque 头文件 #include
void test1() {
deque dq;
dq.push_back(1);//尾插
dq.push_back(2);
dq.push_back(3);
dq.push_front(4);//头插
dq.push_front(5);
dq.push_front(6);
//遍历
printDequeInt(dq);
}
打印
void printDequeInt(deque& dq) {
deque::iterator it = dq.begin();
for (; it != dq.end(); it++)
cout << *it << " ";
cout << endl;
}

删除头和尾元素
dq.pop_back();//尾删
dq.pop_front();//头删
//打印
cout << "\n删除后大小:" << dq.size() << endl;
printDequeInt(dq);

deque用的多的地方就是竞技类,选手打分,去掉最高分和最低分;
有 5 名选手:选手 ABCDE,10 个评委分别对每一名选手打分,去除最高分,去除评委中最低分,取平均分。

#include//accumulate()累加函数
#include
#include
#include
#include
#include
#include//accumulate()累加函数
#include//添加随机种子,srand(time(NULL));
using namespace std;
class Person
{
public:
Person(string name, float score)
{
this->m_Name = name;
this->m_Score = score;
}
string m_Name;
float m_Score;
};
//创建选手
void creatPerson(vector& p) {
string tmpName = "ABCDE";
for (int i = 0; i < 5; i++) {
string name = "选手";
name += tmpName[i];
p.push_back(Person(name,0.0f));//初始选手的分数都是0
}
}
//显示选手
void showPerson(vector& p) {
vector::iterator it = p.begin();
for (; it != p.end(); it++)
cout << (*it).m_Name << " 成绩:" << (*it).m_Score << endl;
}
//比赛
void playGame(vector& p) {
vector::iterator it = p.begin();
deque d;
for (; it != p.end(); it++) {//5名选手
for (int i = 0; i < 10; i++) {//10名评委
d.push_back((float)(rand() %41 + 60));//随机分在60~100 (0~40 + 60)
}
//对10个成绩排名
sort(d.begin(),d.end());
//去掉最低分和最高分
d.pop_front();
d.pop_back();
//剩下8个分数求平均 = 最后得分
//accumulate()求和 / szie(); //accumulate()头文件#include
(*it).m_Score = (float)accumulate(d.begin(), d.end(), 0) / d.size(); //加0
}
}
测试
void test2() {
vector v;
//设置随机数种子,否则随机数每次都不变
srand(time(NULL));
//创建选手
creatPerson(v);
//显示选手
showPerson(v);
//比赛
playGame(v);
//显示成绩
showPerson(v);
}

(1)rand()随机函数
//设置随机数种子,否则随机数每次都不变
srand(time(NULL));
(2)累加求和 accumulate()
accumulate定义在#include中,
作用有两个,一个是累加求和,另一个是自定义类型数据的处理;
int sum = accumulate(vec.begin() , vec.end() , 42);
accumulate带有三个形参:头两个形参指定要累加的元素范围,第三个形参则是累加的初值。
accumulate函数将它的一个内部变量设置为指定的初始值,然后在此初值上累加输入范围内所有元素的值。accumulate算法返回累加的结果,其返回类型就是其第三个实参的类型。