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

web前端开发网站设计网络营销推广渠道

web前端开发网站设计,网络营销推广渠道,如何快速做网站关键词,药检局信息化网站系统建设方案目录 容器适配器的理解 容器适配器的实现与使用 三类容器适配器 基本概述 示例代码 容器适配器的理解 容器适配器对底层容器进行封装,不具备自己的数据结构 容器适配器的方法全都由底层容器实现,不支持迭代器 容器适配器的实现与使用 // 容器适配器…

目录

容器适配器的理解

容器适配器的实现与使用

三类容器适配器

基本概述

示例代码


容器适配器的理解

容器适配器对底层容器进行封装,不具备自己的数据结构

容器适配器的方法全都由底层容器实现,不支持迭代器

容器适配器的实现与使用

// 容器适配器的实现与使用#include<iostream>
#include<vector>
#include<deque>
#include<list>
using namespace std;template<typename T, typename Container=deque<T>>
// typename Container=deque<T>表示默认底层容器为deque,也可由用户指定底层容器
class Stack
{
public:// 借助底层容器的方法void push(const T & val)  { con.push_back(val); } // push代理push_backvoid pop()                { con.pop_back(); }     // pop代理pop_backT top() const             { return con.back(); }  // top代理backsize_t size()             { return con.size(); }  // size代理sizebool empty() const        { return con.empty(); } // empty代理empty
private:Container con; // 底层容器
};int main()
{Stack<int> sta1;for(int i = 0; i < 20; i ++)sta1.push(rand()%100 + 1);cout << "使用默认底层容器deque实现栈Stack" << endl;cout << sta1.size() << "个随机整数如下:" << endl;while(! sta1.empty()){cout << sta1.top() << " ";sta1.pop();}cout << endl;cout << "--------------------------------------------" << endl;Stack<int, vector<int>> sta2;for(int i = 0; i < 20; i ++)sta2.push(rand()%100 + 1);cout << "指定底层容器为vector实现栈Stack" << endl;cout << sta2.size() << "个随机整数如下:" << endl;while(! sta2.empty()){cout << sta2.top() << " ";sta2.pop();}cout << endl;cout << "--------------------------------------------" << endl;Stack<int, list<int>> sta3;for(int i = 0; i < 20; i ++)sta3.push(rand()%100 + 1);cout << "指定底层容器为list实现栈Stack" << endl;cout << sta3.size() << "个随机整数如下:" << endl;while(! sta3.empty()){cout << sta3.top() << " ";sta3.pop();}cout << endl;return 0;
}/*
使用默认底层容器deque实现栈Stack
20个随机整数如下:
37 28 43 96 92 62 28 82 46 6 65 63 59 79 25 70 1 35 68 42  
--------------------------------------------
指定底层容器为vector实现栈Stack
20个随机整数如下:
95 36 100 68 13 70 39 72 27 48 96 19 17 22 83 93 54 3 5 92 
--------------------------------------------
指定底层容器为list实现栈Stack
20个随机整数如下:
79 30 42 24 60 38 58 63 45 48 69 54 12 42 65 74 34 23 12 4 
*/

三类容器适配器

// 1、栈stack

stack默认依赖deque

// 2、队列queue

queue默认依赖deque

// 3、优先队列priority_queue

priority_queue默认依赖vector

基本概述

// stack和queue都默认依赖deque的理由

1、初始时,vector内存使用效率低,deque内存使用效率高

2、对于queue来说,需要支持尾部入队和头部出队

依赖deque可将入队和出队的时间复杂度控制在O(1)

依赖vector入队O(1),但是出队O(n),会导致出队效率很低

3、当存储大量数据时,vector需要连续内存,内存利用率低

deque只需分段内存,内存利用率高

// priority_queue默认依赖vector的理由

priority_queue底层数据结构为大根堆(堆顶元素值最大)

vector内存连续可以更好地适应大根堆,理由如下:

如果堆节点的下标从0开始编号(堆顶节点的下标为0),

那么对于堆中某个下标为i的节点,其左子节点的下标为2i+1,其右子节点的下标为2i+2

这些规律建立在内存连续的基础之上

示例代码

/*
stack:push入栈 pop出栈 top栈顶元素 empty判断栈空 size元素数量
queue:push入队 pop出队 front队头元素 back队尾元素 empty判断队空 size元素数量
priority_queue:push入队 pop出队 top队顶元素 empty判断队空 size元素数量
*/#include<iostream>
#include<vector> // 向量容器
#include<deque>  // 双端队列
#include<list>   // 链表容器
#include<stack>  // 栈
#include<queue>  // 队列、优先队列
using namespace std;int main()
{stack<int> sta;for(int i = 0; i < 20; i ++)sta.push(rand()%100 + 1);cout << "栈stack" << endl;cout << sta.size() << "个随机整数如下:" << endl;while(! sta.empty()){cout << sta.top() << " ";sta.pop();}cout << endl;cout << "--------------------------------------------" << endl;queue<int> que;for(int i = 0; i < 20; i ++)que.push(rand()%100 + 1);cout << "队列queue" << endl;cout << que.size() << "个随机整数如下:" << endl;while(! que.empty()){cout << que.front() << " ";que.pop();}cout << endl;cout << "--------------------------------------------" << endl;priority_queue<int> pque;for(int i = 0; i < 20; i ++)pque.push(rand()%100 + 1);cout << "优先队列priority_queue" << endl;cout << pque.size() << "个随机整数如下:" << endl;while(! pque.empty()){cout << pque.top() << " ";pque.pop();}cout << endl;return 0;
}/*
栈stack
20个随机整数如下:
37 28 43 96 92 62 28 82 46 6 65 63 59 79 25 70 1 35 68 42  
--------------------------------------------
队列queue
20个随机整数如下:
92 5 3 54 93 83 22 17 19 96 48 27 72 39 70 13 68 100 36 95 
--------------------------------------------
优先队列priority_queue
20个随机整数如下:
79 74 69 65 63 60 58 54 48 45 42 42 38 34 30 24 23 12 12 4 
*/
http://www.rdtb.cn/news/14412.html

相关文章:

  • 网站后台jsp怎么做分页优化方案电子版
  • 政府门户网站建设报价网址导航
  • 有什么网站可以做深圳初二的试卷练习一个新手怎么做电商
  • php网站建设制作设计seo sem是指什么意思
  • 图书馆网站参考咨询建设独立站seo搜索优化
  • 专业网站设计联系社交媒体营销
  • 公司网站优化软件深圳网站设计专业乐云seo
  • 怎么把网站排名排上去人力资源培训机构
  • 培训学做网站要多久直播网站排名
  • 前端代码做招新网站百度seo综合查询
  • 如何做自己的网站后台各网站收录
  • 温州哪里做网站要怎么做网络推广
  • 黑糖不苦还做网站么seo专业技术培训
  • 佛山企业网站建设公司沧州网站建设优化公司
  • 做网站怎样安全采集重庆森林电影完整版
  • 做网站好比做房子企拓客软件多少钱
  • 最新网购平台山东seo
  • 国内做日化官方网站郑州做网站的专业公司
  • 图片网站cms浙江网站建设推广
  • 网站开发研究方法咸宁网站seo
  • 做网站用windows还是mac面点培训学校哪里有
  • 网络营销中网站建设的策略seo排名资源
  • 承德做网站优化百度网页版浏览器入口
  • 网站怎么做会员系统怎样打开网站
  • 什么视频网站可以做链接地址seo模拟点击工具
  • 东莞商城网站开发免费搭建网站平台
  • 导航网站 wordpress公司网站怎么注册
  • 网站透明效果逆冬黑帽seo培训
  • 朝阳区建设工作办公室网站百度号码认证平台个人号码申诉
  • 做网站 知乎临沂百度推广的电话