当前位置: 首页 > news >正文

C++之STL—deque容器

双端数组


区别于 vector (单端数组),

 

构造函数

 

注意:读取数据时,const修饰保证函数内只能读取,不能修改数据

void print(const deque<int>& deq)
{for (deque<int>::const iterator it = deq.begin(); it != deq.end(); it++){cout << *it <<" ";}cout << endl;
}

赋值操作

 

对容器大小操作


* deque没有容量的概念
* 判断是否为空   --- empty
* 返回元素个数   --- size
* 重新指定个数   --- resize

 

 deque 插入和删除


* 插入和删除提供的位置是迭代器!
* 尾插   ---  push_back
* 尾删   ---  pop_back
* 头插   ---  push_front
* 头删   ---  pop_front

 

deque数据存取

 deque排序


#include <algorithm>

  

案例-评委打分


有5名选手:选手ABCDE,10个评委分别对每一名选手打分,去除最高分,去除评委中最低分,取平均分。

1. 创建五名选手,放到vector中
2. 遍历vector容器,取出来每一个选手,执行for循环,可以把10个评分打分存到deque容器中
3. sort算法对deque容器中分数排序,去除最高和最低分
4. deque容器遍历一遍,累加总分
5. 获取平均分

#include<iostream>
using namespace std;
#include<vector>
#include<deque>
#include<string>
#include<algorithm>class Person
{
public:int score;string name;Person(string name,int score){this->name = name;this->score = score;}
};
void setScore(vector <Person>&vec) 
{for (vector<Person>::iterator it = vec.begin(); it != vec.end(); it++){deque <int>d;for (int i = 0; i < 10; i++){int socre = rand() % 41 + 60;    //数字范围60-100d.push_back(socre);}sort(d.begin(), d.end());d.pop_back();d.pop_front();int sum = 0;for (deque<int>::iterator it = d.begin(); it != d.end(); it++){sum += *it;}int avg = sum / d.size();(*it).score = avg;}}
void print_Person(const vector <Person>&vec)
{for(vector<Person>::const_iterator it=vec.begin();it!=vec.end();it++){//cout << "选手测试" << endl;cout <<"选手名字:"<< (*it).name << endl;cout << "选手平均分" << it->score << endl;}
}
void creat_Person(vector <Person>&vec)
{string str= "ABCDE";for (int i = 0; i < str.size(); i++){int score = 0;Person p("选手", score);p.name += str[i];vec.push_back(p);}}int main()
{vector<Person> vec;creat_Person(vec);setScore(vec);print_Person(vec);system("pause");return 0;
}

 

http://www.lryc.cn/news/445571.html

相关文章:

  • leveldb前缀匹配查找Seek
  • 【自动驾驶】ros如何隔绝局域网内其他电脑播包
  • MySQL程序
  • 吉林省自闭症寄宿学校:提供个性化培养方案
  • Java基础 — Java 虚拟机(上篇)
  • C++ | Leetcode C++题解之第435题无重叠区间
  • AI编辑器CURSOR_CURSOR安装教程_使用AI进行编码的最佳方式。
  • 华为HarmonyOS灵活高效的消息推送服务(Push Kit) -- 10 推送实况窗消息
  • 探索 Go 语言程序实体:揭开神秘面纱
  • 深入理解端口、端口号及FTP的基本工作原理
  • 9.3 Linux_文件I/O_相关函数
  • 点亮一个LED灯
  • 分布式框架 - ZooKeeper
  • 8月份,AI图像生成领域web端产品排行榜及产品是做什么的
  • Sqlite_Datetime列选择三月的行
  • spring里面内置的非常实用的工具
  • 计算机毕业设计 基于Python内蒙古旅游景点数据分析系统 Django+Vue 前后端分离 附源码 讲解 文档
  • centos7 docker部署nacos
  • 短视频矩阵源码/短视频矩阵系统搭建/源码开发知识分享
  • Git使用教程-将idea本地文件配置到gitte上的保姆级别教程
  • 论文 | Reframing Instructional Prompts to GPTk’s Language
  • C++ Qt / VS2019 +opencv + onnxruntime 部署语义分割模型【经验2】
  • 代码随想录算法训练营Day9
  • 2025秋招NLP算法面试真题(二十)-有监督微调基本概念
  • 使用宝塔部署项目在win上
  • [大语言模型-论文精读] Diffusion Model技术-通过时间和空间组合扩散模型生成复杂的3D人物动作
  • vue 引入 esri-loader 并加载地图
  • LobeChat:使用服务端数据库部署 - Docker+NextAuth(github)+腾讯云
  • 长列表加载性能优化
  • Vue ElemetUI table的行实现按住上下键高亮上下移动效果