博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STL deque
阅读量:7254 次
发布时间:2019-06-29

本文共 4041 字,大约阅读时间需要 13 分钟。

deque 分块储存数据,双口分段式连续内存空间容器,无大小和容量概念

#define _CRT_SECURE_NO_WARNINGS#include
#include
#include
#include
#include
#include
using namespace std;void printDeque(const deque
&d){ for (deque
::const_iterator it = d.begin(); it != d.end(); ++it){ cout << *it << " "; } //deque
::reverse_iterator cout << endl;}//1. deque构造函数/*deque
deqT;//默认构造形式deque(beg, end);//构造函数将[beg, end)区间中的元素拷贝给本身。deque(n, elem);//构造函数将n个elem拷贝给本身。deque(const deque &deq);//拷贝构造函数。*/void test01(){ int arr[] = { 1, 2, 3, 4, 5, 6 }; deque
d1(arr,arr+sizeof(arr)/sizeof(int)); printDeque(d1); deque
d2(10, 6); printDeque(d2);}//2.deque赋值操作 /*assign(beg, end);//将[beg, end)区间中的数据拷贝赋值给本身。assign(n, elem);//将n个elem拷贝赋值给本身。deque& operator=(const deque &deq); //重载等号操作符swap(deq);// 将deq与本身的元素互换*/void test02(){ int arr[] = { 1, 2, 3, 4, 5, 6 }; deque
d1(arr, arr + sizeof(arr) / sizeof(int)); printDeque(d1); deque
d2; d2.assign(d1.begin(),d1.end()); d2.push_back(100); printDeque(d2); cout << "--------------" << endl; d1.swap(d2); printDeque(d1); printDeque(d2);}//3. deque大小操作/*deque.size();//返回容器中元素的个数deque.empty();//判断容器是否为空deque.resize(num);//重新指定容器的长度为num,若容器变长,则以默认值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除。deque.resize(num, elem); //重新指定容器的长度为num,若容器变长,则以elem值填充新位置,如果容器变短,则末尾超出容器长度的元素被删除。*/void test03(){ deque
d; cout << d.size() << endl; if (d.empty()){ cout << "空!" << endl; } d.resize(10, 7); printDeque(d);}//4. deque双端插入和删除操作/*push_back(elem);//在容器尾部添加一个数据push_front(elem);//在容器头部插入一个数据pop_back();//删除容器最后一个数据pop_front();//删除容器第一个数据*/void test04(){ deque
d; d.push_back(10); d.push_front(20); printDeque(d); d.pop_back(); d.pop_front(); cout << d.size() << endl;}//5. deque插入操作/*insert(pos,elem);//在pos位置插入一个elem元素的拷贝,返回新数据的位置。insert(pos,n,elem);//在pos位置插入n个elem数据,无返回值。insert(pos,beg,end);//在pos位置插入[beg,end)区间的数据,无返回值。*/void test05(){ deque
d; d.push_back(10); d.push_back(20); d.push_back(30); d.push_back(40); d.push_back(50); d.insert(d.begin() + 1,100); d.insert(d.begin() + 2, 2, 0); printDeque(d); deque
d2; d2.push_back(100); d2.push_back(200); d2.push_back(300); d2.insert(d2.begin() + 1, d.begin() + 1, d.end()); printDeque(d2);}//6. deque删除操作/*clear();//移除容器的所有数据erase(beg,end);//删除[beg,end)区间的数据,返回下一个数据的位置。erase(pos);//删除pos位置的数据,返回下一个数据的位置。*/void test06(){ deque
d; d.push_back(10); d.push_back(20); d.push_back(30); d.push_back(40); d.push_back(50); d.erase(d.begin()); d.erase(d.begin(), d.end()); //d.clear(); cout << d.size() << endl;}//学生打分案例//有5个学生,10个评委分别对这5个学生进行打分,去除最低分,去除最高分,取平均分class Student{public: string mName; int mScore;};//创建学生void CreateStudents(vector
&vec){ string seedName = "ABCDE"; for (int i = 0; i < 5;i ++){ //创建学生 Student stu; stu.mName = "学生"; stu.mName += seedName[i]; stu.mScore = 0; //保存学生信息 vec.push_back(stu); }}//对每一个学生进行打分void SetSocre(vector
&vec){ //种下种子 srand((unsigned int)time(NULL)); //遍历学生 for (vector
::iterator it = vec.begin(); it != vec.end(); ++it){ //保存分数 deque
dScore; for (int i = 0; i < 10;i ++){ int score = rand() % 70 + 30; dScore.push_back(score); } //排序 sort(dScore.begin(), dScore.end()); //去除最高分,去除最低分 dScore.pop_back(); dScore.pop_front(); //求总分 int totalScore = 0; for (deque
::iterator sit = dScore.begin(); sit != dScore.end();++sit){ totalScore += (*sit); } //求平均分 int avgScore = totalScore / dScore.size(); //保存当前学生分数 it->mScore = avgScore; }}//给学生排序,并且输出bool mycomapre(Student &s1,Student &s2){ return s1.mScore > s2.mScore;}void ShowStudengsByScore(vector
&vec){ sort(vec.begin(), vec.end(), mycomapre); //学生成绩从大到小显示 for (vector
::iterator it = vec.begin(); it != vec.end(); ++it){ cout << "Name:" << it->mName << " Score:" << it->mScore << endl; }}void test07(){ vector
vStus; //保存学生信息 //1.创建学生 CreateStudents(vStus); //2.评委给学生打分 SetSocre(vStus); //3.根据成绩降序排列学生 ShowStudengsByScore(vStus);}int main(){ //test01(); //test02(); //test03(); //test04(); //test05(); //test06(); test07(); system("pause"); return EXIT_SUCCESS;}

 

转载于:https://www.cnblogs.com/w-x-me/p/6792027.html

你可能感兴趣的文章
如何设计秒杀系统
查看>>
屏蔽USB设备的几种方法
查看>>
zen cart 特价商品列表页中加入排序选择
查看>>
配置Pycharm4.5.4调试edX Devstack
查看>>
Nginx+Tomcat负载均衡配置
查看>>
symbol AP5131重置密码和恢复出厂设置
查看>>
自定义一个jdbc框架
查看>>
[SHELL]shell scripts笔记(2)
查看>>
redis 客户端工具
查看>>
Apache禁止用IP非法域名访问网站
查看>>
监控服务篇---zabbix安装部署步骤
查看>>
nagios 远程Mysql 监控 PHP图表
查看>>
PingingLab传世经典系列《CCNA完全配置宝典》-3.13 DHCP基本配置
查看>>
新的开始
查看>>
fedora 20 上的hadoop 2.2.0 x64 编译过程
查看>>
找创业伙伴,比找老婆还难【转载】
查看>>
yarn上手体验
查看>>
iOS 图片和音频的防盗链的应用
查看>>
Exchange Server 2010高可用性配置
查看>>
Linux 运维工程师:30 道面试题整理
查看>>