```
#include<iostream>
#include<algorithm>
#include<ctime>
#include<vector>
#include<deque>
#include<cstring>
#include<cstdlib>
using namespace std; /*评委打分案例(sort算法排序)
创建5个选手(姓名,得分),10个评委对5个选手进行打分
得分规则:去除最高分,去除最低分,取出平均分
按得对5个选手进行排名*/ //选手类
class Player{
public:
string mName;
int mScore;
public:
Player(){}
Player(string name,int score):mName(name),mScore(score){} }; //创建选手
void Create_Player(vector<Player>& v){
string nameSeed="ABCDE";
for(int i=; i<; i++ ){
Player p;
p.mName="选手";
p.mName+=nameSeed[i];
p.mScore=; v.push_back(p);
}
} void PrintScore(int val){
cout<<val<<" ";
}
//打分
void Set_Score(vector<Player>& v){
for(vector<Player>::iterator it=v.begin(); it!=v.end(); it++ ){
//当前学生进行打分
deque<int> dScore;
//srand(((unsigned) time(NULL)));
for(int i=; i<; i++ ){
int score=rand()%+;//产生[60,101)之间的数字
dScore.push_back(score);
} //对分数进行排序
sort(dScore.begin(),dScore.end());
//for_each(dScore.begin(),dScore.end(),PrintScore);
//cout<<endl; //去除最高分,去除最低分
dScore.pop_front();
dScore.pop_back();
//求平均分
int totalScore=;
for(deque<int>::iterator vec=dScore.begin(); vec!=dScore.end(); vec++ ){
totalScore+=(*vec);
} int avgScore=totalScore/dScore.size();
//保存分数
(*it).mScore=avgScore;
}
} //排名规则
bool mycompare(Player& p1,Player& p2){
return p1.mScore>p2.mScore;//从大到小排序
}
//根据选手分数排名,sort默认从小到大,希望从大到小
void Print_Rank(vector<Player>& v){
//排序
sort(v.begin(),v.end(),mycompare);
//打印
for(vector<Player>::iterator it=v.begin(); it!=v.end(); it++ ){
cout<<"姓名:"<<(*it).mName<<" 得分:"<<(*it).mScore<<endl;
}
} int main(){ //定义vector容器,保存选手信息
vector<Player> vPlist;
Create_Player(vPlist);
Set_Score(vPlist);
Print_Rank(vPlist); return ;
} ```

STL之vector,deque学习实例的更多相关文章

  1. [STL] Implement "vector", ”deque“ and "list"

    vector “可增的”数组 vector是一块连续分配的内存,从数据安排的角度来讲,和数组极其相似. 不同的地方就是: (1) 数组是静态分配空间,一旦分配了空间的大小,就不可再改变了: (2) v ...

  2. STL中vector、list、deque和map的区别

    1 vector     向量 相当于一个数组    在内存中分配一块连续的内存空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capac ...

  3. 【转】STL中vector、list、deque和map的区别

    1.vector 向量 相当于一个数组 在内存中分配一块连续的内容空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacity()函数 ...

  4. stl 中List vector deque区别

    stl提供了三个最基本的容器:vector,list,deque.         vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此     它能非常好的支持随 ...

  5. C++STL之Vector向量详解,用法和例子 一起学习 一起加油

                                                                                    C++ STL之vector用法总结 1 ...

  6. STL序列式容器学习总结

    STL序列式容器学习总结 参考资料:<STL源码剖析> 参考网址: Vector: http://www.cnblogs.com/zhonghuasong/p/5975979.html L ...

  7. 带你深入理解STL之Vector容器

    C++内置了数组的类型,在使用数组的时候,必须指定数组的长度,一旦配置了就不能改变了,通常我们的做法是:尽量配置一个大的空间,以免不够用,这样做的缺点是比较浪费空间,预估空间不当会引起很多不便. ST ...

  8. 从零开始写STL—容器—vector

    从0开始写STL-容器-vector vector又称为动态数组,那么动态体现在哪里?vector和一般的数组又有什么区别?vector中各个函数的实现原理是怎样的,我们怎样使用会更高效? 以上内容我 ...

  9. 【C++】STL,vector容器操作

    C++内置的数组支持容器的机制,但是它不支持容器抽象的语义.要解决此问题我们自己实现这样的类.在标准C++中,用容器向量(vector)实现.容器向量也是一个类模板.标准库vector类型使用需要的头 ...

随机推荐

  1. centos7下opencv3的安装

    前面说过opencv和python模块的安装,版本是基于opencv 2的,这篇主要说一下opencv3的安装过程以及相关依赖问题的解决,同样opencv3的安装包在官网上可以下载,最新稳定版是3.3 ...

  2. IE10、IE11使用 __doPostBack 出现未定义问题

    在公司的老项目中分页控件使用了 __doPostBack 方式,在IE兼容模式下正常,在IE10.IE11中 __doPostBack 出现未定义问题. 百度查阅资料得知,这是微软NET环境下的一个B ...

  3. unix环境高级编程-3.10-文件共享(转)

    unix系统支持在不同进程间共享打开的文件. 内核使用三种数据结果表示打开的文件. (1)每个进程在进程表中都有一个记录项,记录项中包含有一张打开文件的描述符表,可将其视为一个矢量,每个描述符占用一项 ...

  4. 安装nginx和添加ssl证书

    一. 准备: 1. 需要有一台centos的服务器 2. 域名解析到服务器 3. 域名的nginx证书 二. 安装Nginx(输入下面的指令后:可访问实验机器外网 HTTP 服务http://118. ...

  5. 实战c++中的vector系列--vector&lt;unique_ptr&lt;&gt;&gt;初始化(全部权转移)

    C++11为我们提供了智能指针,给我们带来了非常多便利的地方. 那么假设把unique_ptr作为vector容器的元素呢? 形式如出一辙:vector<unique_ptr<int> ...

  6. Android BLE蓝牙开发-读写数据 获取UUID

    https://www.jianshu.com/p/3711cfbf7128 一个ble蓝牙设备有多个包括多个Profile 一个Profile中有多个服务Service(通过服务的uuid找到对应的 ...

  7. Cacti 1.1.6 添加monitor和thold插件

    以前一直使用0.8版本的cacti,最近升级到1.1.6之后,发现以前0.8用的插件已经不适用了,需要下载新的插件包进行导入到下面网址获取Cacti插件包https://github.com/Cact ...

  8. iOS中如何创建一个滑出式导航面板(1)

    本文将介绍如何创建类似Facebook和Path iOS程序中的滑出式导航面板. 向右滑动 滑出式设计模式可以让开发者在程序中添加常用的导航功能,又不会浪费屏幕上宝贵的空间.用户可以在任意时间滑出导航 ...

  9. Java多线程的同步机制(synchronized)

    一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在 java里边就是拿到某个同步对象的锁(一个对象只有一把锁): 如果这个时候同步对象的锁被其他线程拿走了,他(这个 ...

  10. pip离线安装软件包

    1. 首先一台主机上安装所有python包,然后运行如下命令下载依赖包: pip freeze > requirements pip download -r requirements 当然可以在 ...