vector deque应用"/>
vector deque应用
实现:用vector 和deque容器实现一个简单打分案例
规则:有5名选手:选手ABCDE,10个评委分别对每一名选手打分,
去除最高分,去除中最低分,取平均分。
#include<iostream>
#include<deque>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;//1. 创建五名选手,放到vector中
//2. 遍历vector容器,取出来每一个选手,执行for循环,
//可以把10个评分 打分存到deque容器中
//3. sort算法对deque容器中分数排序,pop_back pop_front去除最高和最 低分
//4. deque容器遍历一遍,累加分数,累加分数/d.size() class Player {
public:Player() {}Player(string name, int score) :mname(name), mscore(score) {}
public:string mname;int mscore;
};
//创建选手
void create_Player(vector<Player>& v) {string nameSeed = "ABCDE";for (int i = 0; i < size(nameSeed); i++) {Player p;p.mname = "选手";p.mname += nameSeed[i];p.mscore = 0;v.push_back(p);}}
//打分
void set_Score(vector<Player>& v) {for (vector<Player>::iterator it = v.begin(); it != v.end(); it++) {//当前学生deque<int> de;//打分for (int i = 0; i < 10; i++) {int scoreDe = rand() % 41 + 60;de.push_front(scoreDe);}sort(de.begin(),de.end());de.pop_front();//去掉最小,最高分de.pop_front();////平均分int total = 0;for (deque<int>::iterator itt = de.begin(); itt != de.end();itt++) {total += (*itt);}float average= total / de.size();//保存分数(*it).mscore = average;}
}
bool cmp(Player& p1, Player& p2) {return p1.mscore > p2.mscore;
}//排名
void print_Rank(vector<Player>& v) {//sort(v.begin(), v.end(), cmp);//for (vector<Player>::iterator it = v.begin(); it != v.end(); it++) {cout << "选手:" << (*it).mname << "得分:" <<(*it).mscore<< endl;;}
}int main() {//定义vector保存选手信息vector<Player> pp;create_Player(pp);set_Score(pp);print_Rank(pp);return 0;
}
更多推荐
vector deque应用
发布评论