案例--评委打分
1.C++函数模板案例2.普通函数与函数模板调用规则3.普通函数与函数模板调用规则24.模板的局限性5.类模板6.类模板与函数模板的区别7.类模板中成员函数创建时机8.类模板对象做函数参数9.类模板与继承10.类模板成员函数类外实现11.类模板分文件编写12.类模板与友元13.类模板案例14.STL初识15.容器算法迭代器初识16.Vector中存放自定义数据类型17.Vector容器镶套容器18.STL---常用容器19.string赋值操作20.string字符串拼接21.string查找和替换22.string字符串比较/字符存取/插入和删除/子串获取23.vector容器/构造函数/赋值操作/容量和大小/插入和删除/数据存储/互换容器/预留空间24.deque容器/构造函数/赋值操作/大小操作/插入和删除/数据存取/排序
25.案例--评委打分
26.力扣---两数之和---unordered_map-STL容器案例描述:
有5名选手:选手ABCBE,10个评委分别对每一名选手打分,去除最高分,去除评委中最低分,取平均分。
实现步骤
1.创建五名选手,放到vector中
2.遍历vector容器,取出来每一个选手,执行for循环,可以把10个评分打分存到deque容器中
3. sort算法对deque容器中分数排序,去除最高和最低分
4.deque容器遍历一遍,累加总分
5.获取平均分
示例:
#include <iostream> using namespace std; #include <deque> #include <algorithm> // 标准算法头文件 #include <vector> #include <string> #include <ctime> //deque容器排序 class Person { public: Person(string name, int score) { this->m_Name = name; this->m_Score = score; } string m_Name;//姓名 int m_Score;//平均分 }; // void printDeque(const deque<int>&d) // { // for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++) // { // cout << *it << " "; // } // cout << endl; // } void creatPerson(vector<Person>&v) { string nameSeed="ABCDE"; for (int i = 0; i < 5; i++) { string name="选手"; name+=nameSeed[i]; int score=0; Person p(name,score); //将创建的Person对象放入到容器中 v.push_back(p); } } void setScrore(vector<Person>&v) { for (vector<Person>::iterator it = v.begin(); it!=v.end(); it++) { //将评委的分数放入到deque容器中 deque<int>d; for (int i = 0; i < 10; i++) { int score=rand()%41+60;//60-100 d.push_back(score); } // cout<<"选手:"<<it->m_Name<<"打分:"<<endl; // for (deque<int>::iterator dit =d.begin() ; dit!=d.end(); dit++) // { // cout<<*dit<<" "; // } // cout<<endl; //排序 sort(d.begin(),d.end()); //去除最高分和最低分 d.pop_back(); d.pop_front(); //取平均分 int sum=0; for (deque<int>::iterator dit = d.begin(); dit!=d.end(); dit++) { sum+=*dit;//累加每个评委的分数 } int avg=sum/d.size(); //将平均分赋值给选手身上 it->m_Score=avg; } }; void showScore(vector<Person>&v) { for (vector<Person>::iterator it = v.begin(); it!=v.end(); it++) { cout<<"姓名:"<<it->m_Name<<"平均分:"<<it->m_Score<<endl; } } int main() { //随机数种子 srand((unsigned int)time(NULL)); //1.创建5名选手 vector<Person>v;//存放选手容器 creatPerson(v); //测试 // for (vector<Person>::iterator it = v.begin(); it!=v.end(); it++) // { // cout<<"姓名:"<<(*it).m_Name<<"分数:"<<(*it).m_Score<<endl; // } //2.给5名选手打分 setScrore(v); //3.显示最后得分 showScore(v); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通