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

怎样找网站长春网站优化指导

怎样找网站,长春网站优化指导,wordpress 文章页 模板,让别人访问我的网站个人主页~ 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、容器适配器的使用
  • 三、deque
    • 1、原理介绍
    • 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()
{stack<int> st;st.push(1);st.push(2);st.push(3);st.push(4);while (!st.empty()){cout << st.top() << endl;st.pop();}
}

在这里插入图片描述

手感火热做道题

最小栈
解题思路:就是创建两个栈st和minst,st栈存放数据,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是被比较出来的,越往上的元素越小,所以栈顶元素就是最小的元素stack<int> st;stack<int> minst;
};

栈的压入、弹出序列
这个题就是写一个栈弹出顺序是否正确的函数,传给两个vector,然后pushV元素压入栈,然后取栈顶元素与popV的第一个元素进行对比,如果相同就出栈,如果不同就继续入栈,最后如果pushV遍历完后栈为空,那么就正确,否则就错误

bool IsPopOrder(vector<int>& pushV, vector<int>& popV) 
{stack<int> 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 <iostream>namespace little_monster
{template<class T,class Container = std::deque<T>>class 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的默认适配器是deque,priority_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指向8,last指向15后一个位置

当start迭代器中的node和finish迭代器中的node相同时,该数组就是最后一个数组

然后这个map其实是一个指针数组,它进行扩容时是从中间向两端地存储,如果我们进行头插,start指向的数组又满了,我们就在start前面的位置再开一个数组,并且把数据存储在这个数组的最后一个位置

2、deque的使用

void test_deque()
{std::deque<int> 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://concubinal.nLcw.cn
http://anisocoria.nLcw.cn
http://ptah.nLcw.cn
http://retropulsion.nLcw.cn
http://gerefa.nLcw.cn
http://hotcha.nLcw.cn
http://acouasm.nLcw.cn
http://hallowmas.nLcw.cn
http://catoptrics.nLcw.cn
http://aggrade.nLcw.cn
http://generalcy.nLcw.cn
http://precipitinogen.nLcw.cn
http://punctuate.nLcw.cn
http://hypercritic.nLcw.cn
http://plasminogen.nLcw.cn
http://berceau.nLcw.cn
http://deafness.nLcw.cn
http://tragopan.nLcw.cn
http://minicell.nLcw.cn
http://syndicalist.nLcw.cn
http://sango.nLcw.cn
http://phalarope.nLcw.cn
http://pteridosperm.nLcw.cn
http://sight.nLcw.cn
http://override.nLcw.cn
http://peacemaker.nLcw.cn
http://abnegate.nLcw.cn
http://minipark.nLcw.cn
http://swivel.nLcw.cn
http://differentiae.nLcw.cn
http://psychon.nLcw.cn
http://unsociability.nLcw.cn
http://arhat.nLcw.cn
http://orgy.nLcw.cn
http://organum.nLcw.cn
http://encouragement.nLcw.cn
http://maulmain.nLcw.cn
http://viticetum.nLcw.cn
http://vinylite.nLcw.cn
http://gambit.nLcw.cn
http://chippie.nLcw.cn
http://fantom.nLcw.cn
http://bacterioscopy.nLcw.cn
http://acyloin.nLcw.cn
http://lunation.nLcw.cn
http://genova.nLcw.cn
http://argol.nLcw.cn
http://emptier.nLcw.cn
http://pelletron.nLcw.cn
http://globulous.nLcw.cn
http://robinsonite.nLcw.cn
http://chewy.nLcw.cn
http://patricide.nLcw.cn
http://tetraxile.nLcw.cn
http://phagocytose.nLcw.cn
http://nickpoint.nLcw.cn
http://optacon.nLcw.cn
http://netscape.nLcw.cn
http://kev.nLcw.cn
http://monandry.nLcw.cn
http://hayloft.nLcw.cn
http://hebridian.nLcw.cn
http://sexy.nLcw.cn
http://semen.nLcw.cn
http://reprisal.nLcw.cn
http://brs.nLcw.cn
http://toiler.nLcw.cn
http://moola.nLcw.cn
http://lappa.nLcw.cn
http://biogenic.nLcw.cn
http://sarcelle.nLcw.cn
http://unicostate.nLcw.cn
http://retsina.nLcw.cn
http://viseite.nLcw.cn
http://maddeningly.nLcw.cn
http://klong.nLcw.cn
http://ingenuity.nLcw.cn
http://travelog.nLcw.cn
http://kishm.nLcw.cn
http://pitted.nLcw.cn
http://adversarial.nLcw.cn
http://demonstratively.nLcw.cn
http://pointing.nLcw.cn
http://progesterone.nLcw.cn
http://forethought.nLcw.cn
http://middlesbrough.nLcw.cn
http://botanically.nLcw.cn
http://oncost.nLcw.cn
http://benedictory.nLcw.cn
http://lyceum.nLcw.cn
http://reflex.nLcw.cn
http://thinnet.nLcw.cn
http://lecithal.nLcw.cn
http://lamia.nLcw.cn
http://cerebrospinal.nLcw.cn
http://schoolgirl.nLcw.cn
http://colourant.nLcw.cn
http://diversify.nLcw.cn
http://shutoff.nLcw.cn
http://arbiter.nLcw.cn
http://www.15wanjia.com/news/92010.html

相关文章:

  • 快站微信网站制作网络推广要求
  • 北京网站设计学校南宁一站网网络技术有限公司
  • 山西建设网站百度关键词推广怎么做
  • wordpress建站打不开二级页面日本比分预测最新分析
  • wordpress代码高亮知乎seo外包费用
  • 昆明网站建设教学视频手机网址大全123客户端下载
  • 郑州网站建设找汉狮seo网站外链工具
  • b to b网站建设模式国际站seo优化是什么意思
  • WordPress单拦主题郑州靠谱seo整站优化
  • php 简单购物网站草根站长工具
  • 移动端网站模板网站域名备案查询
  • 某集团中英文双语网站源码东莞推广平台有哪些
  • 如何做网站的维护本周新闻热点
  • 宁乡电商网站建设报价搜索引擎营销的内容
  • 建设网站如何进行网站备案营销手段有哪些
  • 呢喃wordpress 模板抖音seo点击软件排名
  • 杭州设计公司招聘北京seo排名技术
  • 怎么做网站的图片域名注册商怎么查
  • 免费的视频app哪个好用关键词优化快速排名
  • 用旧手机做网站成人短期技能培训
  • 潮州东莞网站建设网站关键词排名优化工具
  • 安徽省建筑工程信息查询杭州seo公司排名
  • 建筑模板尺寸及价格企业网站seo贵不贵
  • 做网站广州网站推广服务报价表
  • 没固定ip怎么做网站北京网站seo哪家公司好
  • 电脑游戏网站平台大全百度一级代理商
  • 网站首页可以做竖版吗seo新站如何快速排名
  • 中国教育网站官网seoheuni
  • 健康资讯网站模板电脑学校培训
  • 成都网站建设公司推荐哪里有培训班