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

电 器建设网站目的及功能定位网站程序设置主页面

电 器建设网站目的及功能定位,网站程序设置主页面,重庆泡笋制作,网页qq登陆聊天个人主页~ Stack 一、Stack的介绍和使用1、stack的介绍2、stack的使用3、stack的模拟实现 二、容器适配器1、什么是适配器2、容器适配器的使用 三、deque1、原理介绍2、deque的使用3、deque的缺陷 一、Stack的介绍和使用 1、stack的介绍 stack详细解释 stack是一种容器适配器… 个人主页~ Stack 一、Stack的介绍和使用1、stack的介绍2、stack的使用3、stack的模拟实现 二、容器适配器1、什么是适配器2、容器适配器的使用 三、deque1、原理介绍2、deque的使用3、deque的缺陷 一、Stack的介绍和使用 1、stack的介绍 stack详细解释 stack是一种容器适配器专门用来处理后进先出操作其删除只能从容器的一端进行元素的插入和提取操作 stack是作为容器适配器被实现的容器适配器是对特定类封装为其底层的容器并提供一组特定的成员函数来访问其元素将特定类作为其底层的元素特定容器的尾部被压入和弹出 stack的底层容器可以是任何标准的容器类模版或者一些其他特定的容器类这些容器都要支持empty判空、back获取尾部元素、push_back尾部插入元素、pop_back尾部删除元素的操作这些是stack的基本接口 标准容器vector、list、deque均符合这些要求如果没有指定stack的底层容器默认为deque这其中只有deque没有学习过后面拿一个段落专门解释deque 2、stack的使用 函数说明接口说明stack构造空的栈empty检测stack是否为空size返回stack中的元素个数top返回栈顶元素的引用push将元素val压入stack中pop将stack中尾部的元素弹出 void test_stack() {stackint st;st.push(1);st.push(2);st.push(3);st.push(4);while (!st.empty()){cout st.top() endl;st.pop();} }手感火热做道题 最小栈 解题思路就是创建两个栈st和minstst栈存放数据minst栈存放最小值第一个入st栈的直接入minst栈每次入st栈都与minst栈的top比较一下是不是更小如果数小就入minst栈 class MinStack { public:MinStack() {}//空构造构造空栈void push(int val) {if(minst.empty() || val minst.top()){minst.push(val);}st.push(val);}//如果minst栈为空或者入栈的值小于等于minst的栈顶元素就入minst栈void pop() {if(st.top() minst.top()){minst.pop();}st.pop();}//如果删除st栈顶元素与minst栈顶的元素相等就连minst栈顶元素一块删除int top() {return st.top();}int getMin() {return minst.top();} //因为minst是被比较出来的越往上的元素越小所以栈顶元素就是最小的元素stackint st;stackint minst; };栈的压入、弹出序列 这个题就是写一个栈弹出顺序是否正确的函数传给两个vector然后pushV元素压入栈然后取栈顶元素与popV的第一个元素进行对比如果相同就出栈如果不同就继续入栈最后如果pushV遍历完后栈为空那么就正确否则就错误 bool IsPopOrder(vectorint pushV, vectorint popV) {stackint st;size_t pushi 0,popi 0;//用于记录pushV、popV的下标while(pushi pushV.size())//如果下标小于size循环继续{st.push(pushV[pushi]);//pushV元素压入栈while(!st.empty() st.top() popV[popi]){st.pop();popi;}//然后取栈顶元素与popV的第一个元素进行对比如果相同就出栈}return st.empty(); }3、stack的模拟实现 stack.h #pragma once#include vector #include deque #include list #include iostreamnamespace little_monster {templateclass T,class Container std::dequeTclass stack{public:stack(){}void push(const T x){_c.push_back(x);}void pop(){_c.pop_back();}T top(){return _c.back();}const T top() const{return _c.back();}size_t size() const{return _c.size();}bool empty() const{return _c.empty();}private:Container _c;}; }stack可以通过vector为底层实现也可以通过list为底层实现直接调用这些模版的接口就可以不用在从零开始定义成员变量了 这里的Container以及deque是什么呢 二、容器适配器 1、什么是适配器 适配器是一种设计模式该种设计模式是将一个类的接口转换成用户希望的另外一个接口适配器可以接受不同的容器来达到用户想要的效果而stack和queue的默认适配器是dequepriority_queue的默认适配器是vector 2、容器适配器的使用 常见于stack、queue、priority_queue、优先队列中 三、deque 相关文档 1、原理介绍 deque是一种双开口的连续空间的数据结构可以在头尾两端进行插入和删除操作且时间复杂度为O(1)与vector比较头插效率高不需要搬移元素与list比较空间利用率比较高 deque并不是真正连续的空间而是由一段段连续的小空间拼接而成的实际deque类似于一个动态的二维数组 双端队列底层是一段假想的连续空间实际是分段连续的为了维护其“整体连续”以及随机访问的假象落在了deque的迭代器身上 偷一张详解图 首先我们可以看到start迭代器它由四个指针组成cur表示当前位置first表示第一个位置last表示最后一个位置node是指向map的其中一个变量 当cur等于last时node指向下一个位置然后cur、first、last都重置到下一个map元素在图中就是cur、first指向8last指向15后一个位置 当start迭代器中的node和finish迭代器中的node相同时该数组就是最后一个数组 然后这个map其实是一个指针数组它进行扩容时是从中间向两端地存储如果我们进行头插start指向的数组又满了我们就在start前面的位置再开一个数组并且把数据存储在这个数组的最后一个位置 2、deque的使用 void test_deque() {std::dequeint dq;dq.push_back(3);dq.push_back(4);dq.push_front(2);dq.push_front(1);for (size_t sz 0; sz dq.size(); sz){std::cout dq[sz] ;}std::cout std::endl; }3、deque的缺陷 它不适合遍历因为在遍历时deque的迭代器要频繁的去检测其是否移动到某小段小空间的边界导致效率低下因此在实际中需要线性结构时大多数优先使用vector和list但我们知道的一个应用就是STL中做stack和queue的底层数据结构 它结合了vector和list的部分优点也得到了它们的部分缺点与vector相比deque的优势是头插头删和扩容时不需要搬移元素效率高与list比较其底层是连续的空间空间利用率较高 今日分享就到这里~
http://www.hkea.cn/news/14492296/

相关文章:

  • 桂林市做网站的公司合肥建设网
  • 个人做淘宝客网站不能备案吗英雄联盟做的广告视频网站
  • 广州网站程序开发哪个网站做系统
  • ppt模板免费下载网南昌seo全网营销
  • 开发网站的经济可行性有哪些网站是做背景图片素材的
  • 太原做网站的公司网络服务业
  • 陇西做网站的公司洛阳信息港洛阳城事
  • 网站下方一般放什么原因网站建设地图怎么设置
  • 做非法网站要多少钱wordpress交互插件
  • 云课堂哪个网站做的好深圳企业官网网站建设哪家好
  • 在线购物网站怎么做久其软件公司网站
  • 建筑资料免费下载网站网站开发需要读的书籍
  • 襄阳高端网站建设哈尔滨市建设网
  • 网站运营与规划网站开发合同预期
  • 制作一个网站的费用是多少网站开发(七)数据库的建表与连接
  • 郑州的网站建设公司上海网站建设 微信开发公司
  • 网站打开很慢电子版简历怎么弄
  • 工程建设项目在哪个网站查询西安seo经理
  • 专业网站定制设计公司网页推广链接怎么做
  • 公司管理系统网站分类信息网站做推广
  • 怎么看网站关键词密度化妆品商城网站建设开发策划方案
  • 长沙网站seo方法html简单网页代码课程表
  • 无域名网站 能否被百度网站开发的主要阶段
  • 深圳正规网站制作哪里好2016wap网站开发语言
  • 社交做的最好的网站有哪些wordpress菜单栏图标
  • 出名的设计网站wordpress获取访问位置
  • 做网站代理需要办什么营业执照上传wordpress网站
  • 网站建设方案书腾讯云wordpress换空间要改什么
  • 做网站干什么wordpress文章编辑代码
  • 中学网站源码龙海网络推广