STL之vector,deque学习实例

  1 ```
  2 #include<iostream>
  3 #include<algorithm>
  4 #include<ctime>
  5 #include<vector>
  6 #include<deque>
  7 #include<cstring>
  8 #include<cstdlib>
  9 using namespace std;
 10
 11 /*评委打分案例(sort算法排序)
 12 创建5个选手(姓名,得分),10个评委对5个选手进行打分
 13 得分规则:去除最高分,去除最低分,取出平均分
 14 按得对5个选手进行排名*/
 15
 16 //选手类
 17 class Player{
 18 public:
 19     string mName;
 20     int mScore;
 21 public:
 22     Player(){}
 23     Player(string name,int score):mName(name),mScore(score){}
 24
 25 };
 26
 27 //创建选手
 28 void Create_Player(vector<Player>& v){
 29     string nameSeed="ABCDE";
 30     for(int i=0; i<5; i++ ){
 31         Player p;
 32         p.mName="选手";
 33         p.mName+=nameSeed[i];
 34         p.mScore=0;
 35
 36         v.push_back(p);
 37     }
 38 }
 39
 40 void PrintScore(int val){
 41     cout<<val<<" ";
 42 }
 43 //打分
 44 void Set_Score(vector<Player>& v){
 45     for(vector<Player>::iterator it=v.begin(); it!=v.end(); it++ ){
 46         //当前学生进行打分
 47         deque<int> dScore;
 48         //srand(((unsigned) time(NULL)));
 49         for(int i=0; i<10; i++ ){
 50             int score=rand()%41+60;//产生[60,101)之间的数字
 51             dScore.push_back(score);
 52         }
 53
 54         //对分数进行排序
 55         sort(dScore.begin(),dScore.end());
 56         //for_each(dScore.begin(),dScore.end(),PrintScore);
 57         //cout<<endl;
 58
 59         //去除最高分,去除最低分
 60         dScore.pop_front();
 61         dScore.pop_back();
 62         //求平均分
 63         int totalScore=0;
 64         for(deque<int>::iterator vec=dScore.begin(); vec!=dScore.end(); vec++ ){
 65             totalScore+=(*vec);
 66         }
 67
 68         int avgScore=totalScore/dScore.size();
 69         //保存分数
 70         (*it).mScore=avgScore;
 71     }
 72 }
 73
 74 //排名规则
 75 bool mycompare(Player& p1,Player& p2){
 76     return p1.mScore>p2.mScore;//从大到小排序
 77 }
 78 //根据选手分数排名,sort默认从小到大,希望从大到小
 79 void Print_Rank(vector<Player>& v){
 80     //排序
 81     sort(v.begin(),v.end(),mycompare);
 82     //打印
 83     for(vector<Player>::iterator it=v.begin(); it!=v.end(); it++ ){
 84         cout<<"姓名:"<<(*it).mName<<" 得分:"<<(*it).mScore<<endl;
 85     }
 86 }
 87
 88 int main(){
 89
 90     //定义vector容器,保存选手信息
 91     vector<Player> vPlist;
 92     Create_Player(vPlist);
 93     Set_Score(vPlist);
 94     Print_Rank(vPlist);
 95
 96     return 0;
 97 }
 98
 99
100 ```

原文地址:https://www.cnblogs.com/Bravewtz/p/10325827.html

时间: 2024-10-26 21:51:36

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

STL标准容器类学习笔记之(Vector/Deque/List)

STL标准容器类简介 1.顺序性容器 vector相当与数组,从后面快速的插入与删除,直接访问任何元素 deque双队列,从前面或后面快速的插入与删除,直接访问任何元素 list双链表,从任何地方快速插入与删除 2.关联容器 set快速查找,不允许重复值 multiset快速查找,允许重复值 map一对一映射,基于关键字快速查找,不允许重复值 multimap一对多映射,基于关键字快速查找,允许重复值 3.容器适配器 stack后进先出 queue先进先出 priority_queue最高优先级

STL学习--vector的学习

(一):学习目标: 1:模板,包括函数模板和类模板 2:容器及其分类,以容器中的数据结构 3:容器vector和迭代器的具体用法 (二):学习 1:函数模板 /** * 学习模板函数 */ int max(int a,int b){ return a > b?a:b; } float max(float a,float b){ return a > b?a:b; } char max(char a,char b){ return a > b?a : b; } 但是类型是比较多的,所以每一

STL容器 vector,list,deque 性能比较

C++的STL模板库中提供了3种容器类:vector,list,deque对于这三种容器,在觉得好用的同时,经常会让我们困惑应该选择哪一种来实现我们的逻辑.在少量数据操作的程序中随便哪一种用起来感觉差别并不是很大,但是当数据达到一定数量后,会明显感觉性能上有很大差异. 本文就试图从介绍,以及性能比较两个方面来讨论这个问题. vector - 会自动增长的数组 list - 擅长插入删除的链表 deque - 拥有vector和list两者优点的双端队列 性能竞技场 性能总结与使用建议 测试程序清

stl 中List vector deque区别

stl提供了三个最基本的容器:vector,list,deque.         vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此     它能非常好的支持随即存取,即[]操作符,但由于它的内存空间是连续的,所以在中间     进行插入和删除会造成内存块的拷贝,另外,当该数组后的内存空间不够时,需要重新     申请一块足够大的内存并进行内存的拷贝.这些都大大影响了vector的效率.         list就是数据结构中的双向链表(根据sgi   s

STL之vector,数组线性容器array,list容器,算法find,find_if,bind1st,仿函数

 1.STL(Standard Template Library,是用泛型技术来设计完成的实例)的概念与组成 Iterator(迭代器) Container(容器) Algorithm(算法) Adaptors(配接器) STL的六大组件分别是: 容器(Container) 算法(Algorithm) 迭代器(Iterator) 仿函数(Function object) 适配器(Adapter) 空间配置器(allocator):只能分配内存等 2.容器与算法 案例如下: #include<

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

C++内置的数组支持容器的机制,但是它不支持容器抽象的语义.要解决此问题我们自己实现这样的类.在标准C++中,用容器向量(vector)实现.容器向量也是一个类模板.标准库vector类型使用需要的头文件:#include <vector>.vector 是一个类模板.不是一种数据类型,vector<int>是一种数据类型.Vector的存储空间是连续的,list不是连续存储的. 一. 定义和初始化vector< typeName > v1;       //默认v1为

STL之vector

今天学习了STL 以前用的c,可是比赛回来发现c有点弱,c++的stl是比较实用的,适合比赛.所以学习了一下. vector. 这是一个容器,其实就是线性表. 使用之前在头部加上#include <vector> 然后就可以使用 vector<type> vec; //type is a kind of basic type (eg. int double ..) 然后访问这个表的时候需要声明一个变量 vector<type>::iterator ite; 然后就可以用

带你深入理解STL之Vector容器

C++内置了数组的类型,在使用数组的时候,必须指定数组的长度,一旦配置了就不能改变了,通常我们的做法是:尽量配置一个大的空间,以免不够用,这样做的缺点是比较浪费空间,预估空间不当会引起很多不便. STL实现了一个Vector容器,该容器就是来改善数组的缺点.vector是一个动态空间,随着元素的加入,它的内部机制会自行扩充以容纳新元素.因此,vector的运用对于内存的合理利用与运用的灵活性有很大的帮助,再也不必因为害怕空间不足而一开始就配置一个大容量数组了,vector是用多少就分配多少. 要

【STL基础】deque

deque (double-ended queue) 构造函数: //default: deque<T> d; //空的vector //fill: deque<T> d(n); //n个元素的deque,元素默认初始化 deque<T> d(n, value); //n个元素值为value的deque //range: deque<T> d(first, last); //两个迭代器之间的元素构成的deque deque<T> d(arr, a