STL 案例分析
#include <iostream>
using namespace std; #include "string"
#include <vector>
#include <list>
#include "set"
#include <algorithm>
#include "functional"
#include "iterator" //输出流迭代器的头文件
#include<numeric>
#include "map"
#include "deque" class Speaker
{
public:
string m_name;
int m_score[];//3轮比赛的得分
}; //产生选手
int GenSpeaker(map<int, Speaker> &mapSpeaker, vector<int> &v)
{
string str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
random_shuffle(str.begin(), str.end()); for (int i=; i<; i++)
{
Speaker tmp;
tmp.m_name = "选手";
tmp.m_name = tmp.m_name + str[i];
mapSpeaker.insert(pair<int, Speaker>(+i, tmp) );
} for (int i=; i<; i++)
{
v.push_back(+i); //参加比赛的人员
}
return ;
} //选手抽签
int speech_contest_draw(vector<int> &v)
{
random_shuffle(v.begin(), v.end());
return ;
} //选手比赛
int speech_contest(int index, vector<int> &v1, map<int, Speaker> &mapSpeaker, vector<int> &v2 )
{
//小组的比赛得分 记录下来;求出前三名 后3名
multimap<int, int, greater<int>> multmapGroup; //小组成绩
int tmpCount = ; for (vector<int>::iterator it=v1.begin(); it!=v1.end(); it++ )
{
tmpCount ++;
//打分
{
deque<int> dscore;
for (int j=; j<; j++) //10个评委打分
{
int score = +rand()%;
dscore.push_back(score);
}
sort(dscore.begin(), dscore.end());
dscore.pop_back();
dscore.pop_front(); //去除最低分 最高分 //求平均分
int scoresum = accumulate(dscore.begin(), dscore.end(), );
int scoreavg = scoresum/dscore.size();
mapSpeaker[*it].m_score[index] = scoreavg; //选手得分 存入容器中
multmapGroup.insert(pair<int ,int>(scoreavg, *it ) );
} //处理分组
if (tmpCount % == )
{
cout << "小组的比赛成绩" << endl;
for (multimap<int, int, greater<int>>::iterator mit=multmapGroup.begin(); mit!=multmapGroup.end(); mit++ )
{
//编号 姓名 得分
cout << mit->second << "\t" << mapSpeaker[mit->second].m_name << "\t" << mit->first << endl;
} //前三名晋级
while (multmapGroup.size() > )
{
multimap<int, int, greater<int>>::iterator it1 = multmapGroup.begin();
v2.push_back(it1->second); //把前三名 放到v2 晋级名单 中
multmapGroup.erase(it1);
} multmapGroup.clear(); //情况本小组 比赛成绩
} }
return ;
}; //查看比赛结果
int speech_contest_print(int index, vector<int> &v, map<int, Speaker> &mapSpeaker)
{
printf("第%d轮 晋级名单\n", index+);
for (vector<int>::iterator it=v.begin(); it!=v.end(); it++)
{
cout << "参赛编号: " << *it << "\t" << mapSpeaker[*it].m_name << "\t" << mapSpeaker[*it].m_score[index] << endl;
}
return ;
}; void main()
{
//容器的设计
map<int, Speaker> mapSpeaker; //参加比赛的选手
vector<int> v1; //第1轮 演讲比赛 名单
vector<int> v2; //第2轮 演讲比赛 名单
vector<int> v3; //第3轮 演讲比赛 名单
vector<int> v4; //最后前三名 演讲比赛 名单 //产生选手 得到第一轮选手的比赛名单
GenSpeaker(mapSpeaker, v1); //第1轮 选手抽签 选手比赛 查看比赛结果
cout << "\n\n\n任意键,开始第1轮比赛" << endl;
cin.get();
speech_contest_draw(v1);
speech_contest(, v1, mapSpeaker, v2);
speech_contest_print(, v2, mapSpeaker); //第2轮 选手抽签 选手比赛 查看比赛结果
cout << "\n\n\n任意键,开始第2轮比赛" << endl;
cin.get();
speech_contest_draw(v2);
speech_contest(, v2, mapSpeaker, v3);
speech_contest_print(, v3, mapSpeaker); //第3轮 选手抽签 选手比赛 查看比赛结果
cout << "\n\n\n任意键,开始第3轮比赛" << endl;
cin.get();
speech_contest_draw(v3);
speech_contest(, v3, mapSpeaker, v4);
speech_contest_print(, v4, mapSpeaker); cout<<"hello..."<<endl;
system("pause");
return ;
}
STL 案例分析的更多相关文章
- ENode框架Conference案例分析系列之 - 文章索引
ENode框架Conference案例分析系列之 - 业务简介 ENode框架Conference案例分析系列之 - 上下文划分和领域建模 ENode框架Conference案例分析系列之 - 架构设 ...
- SQL性能优化案例分析
这段时间做一个SQL性能优化的案例分析, 整理了一下过往的案例,发现一个比较有意思的,拿出来给大家分享. 这个项目是我在项目开展2期的时候才加入的, 之前一期是个金融内部信息门户, 里面有个功能是收集 ...
- CSS3-3D制作案例分析实战
一.前言 上一节,介绍了基础的CSS3 3D动画原理实现,也举了一个小小的例子来演示,但是有朋友跟我私信说想看看一些关于CSS3 3D的实例,所以在这里为了满足一下大家的需求,同时也为了以后能够更好的 ...
- 实时控制软件设计第一周作业-汽车ABS软件系统案例分析
汽车ABS软件系统案例分析 ABS 通过控制作用于车轮制动分泵上的制动管路压力,使汽车在紧急刹车时车轮不会抱死,这样就能使汽车在紧急制动时仍能保持较好的方向稳定性. ABS系统一般是在普通制动系统基础 ...
- 个人作业-Week2 案例分析
微软必应词典客户端的案例分析 第一部分 调研,评测 1)bug: 运行平台:iOS 10.0.2 必应词典版本:4.2.2 1. bug标题:词库加载错误 bug详细描述:学习界面中的经典词库出国考试 ...
- 【MySQL】排序原理与案例分析
前言 排序是数据库中的一个基本功能,MySQL也不例外.用户通过Order by语句即能达到将指定的结果集排序的目的,其实不仅仅是Order by语句,Group by语句,Distinct语句都会隐 ...
- 个人作业-Week2:案例分析
截止时间:2016年9月25日24:00. 很多同学有误解,软件工程课是否就是理论课?或者是几个牛人拼命写代码,其他人打酱油的课?要不然就是学习一个程序语言,搞一个职业培训的课? 都不对, 软件工程有 ...
- ORA-04031错误导致宕机案例分析
今天遇到一起ORACLE数据库宕机案例,下面是对这起数据库宕机案例的原因进行分析.解读.分析过程中顺便记录一下这个案例的前因后果,攒点经验值,培养一下分析.解决问题的能力. 案例环境: 操作系统 ...
- 利用windbg查找dictionary导致IIS占CPU100%案例分析(一)
一.背景 先说下windbg使用场景.各位coder在工作中或多或少都会遇到下面四种情况 1.本地代码好好的,放服务器上运行一段时间后,IIS服务突然占用 w3wp.exe CPU突然100% ,不得 ...
随机推荐
- Xamarin Mono Android Ios 安装、破解(4.12)
一.Windows下面的安装 1. 安装环境介绍: Win8.1 企业版64位.VS2013,mono-android-4.12.02001,下面的安装过程都是在VS2013已经安装成功之后的操作,本 ...
- <转>python version 2.7 required,which was not found in the registry
安装PIL-1.1.7.win32-py2.7的时候,不能再注册表中识别出来python2.7 方法:新建一个register.py 文件,把一下代码贴进去,保存 # # script to regi ...
- POST 一张 图像的调试来认识 http post
上传图片的详细 2559字节
- PHP Module中获取$_GET/$_POST/$_COOKIE的方法研究
假设要获取$_GET['c']; 首先,先介绍下http_globals; 1.http_globals,定义在php_globals.h中: zval * http_globals[6]; 其中的索 ...
- iOS数据存储之属性列表理解
iOS数据存储之属性列表理解 数据存储简介 数据存储,即数据持久化,是指以何种方式保存应用程序的数据. 我的理解是,开发了一款应用之后,应用在内存中运行时会产生很多数据,这些数据在程序运行时和程序一起 ...
- Eclipse编辑java文件报Unhandled event loop exception错误的解决办法
原因:电脑中安装了杀毒软件,卸掉或者关掉就可以了.我的是直接退出,错误就不产生了.
- Javascript——说说js的调试
最近比较吐槽,大家都知道,现在web前端相对几年前来说已经变得很重了,各种js框架,各种面对对象,而且项目多了,就会提取公共模块. 这些模块的UI展示都一样,不一样的就是后台逻辑,举个例子吧,我们做企 ...
- Ineligible Devices 不被识别的设备
设备不可用,出现Ineligible Devices,如下图: 此错误因为 Xcode的Deployment Target 大于设备的,选择和设备一样活着低于设备的.如下图:
- MySQL 主从架构配置详解
无论是哪一种数据库,数据的安全都是至关重要的,因此熟练掌握数据库的安全备份功能,是作为开发人员,特别是后端开发人员的一项必备技能.MySQL 数据库内建的复制功能,可以帮助我们对数据进行异地备份,读写 ...
- JSF 2 multiple select dropdown box example
In JSF, <h:selectManyMenu /> tag is used to render a multiple select dropdown box – HTML selec ...