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

做响应式网站代码好的平面设计灵感网站

做响应式网站代码,好的平面设计灵感网站,google关键词挖掘工具,建站开发工具文章目录 1. 双端队列deque1.1 认识deque1.2 deque的迭代器1.3 deque的常用接口1.4 deque的优缺点 2. 优先队列priority_queue2.1 认识priority_queue2.2 模拟实现优先队列priority_queue 3. 仿函数 在学习deque之前,回顾一下vector和list各自的优缺点 数据结构优点…

文章目录

  • 1. 双端队列deque
    • 1.1 认识deque
    • 1.2 deque的迭代器
    • 1.3 deque的常用接口
    • 1.4 deque的优缺点
  • 2. 优先队列priority_queue
    • 2.1 认识priority_queue
    • 2.2 模拟实现优先队列priority_queue
  • 3. 仿函数

  • 在学习deque之前,回顾一下vector和list各自的优缺点
数据结构优点缺点
vector支持下标随机访问中间或头部插入删除效率低/扩容有一定的消耗,可能存在空间的浪费
list支持任意位置的插入删除/按需扩容或释放,不存在空间浪费不支持随机访问

1. 双端队列deque

1.1 认识deque

  • 前面学过了vector和list,不过两个容器各有各的优点,后来就衍生出集合两者优点的deque
  • 由于deque只是简单的将两者的优点结合,因此它也被称为缝合怪

在这里插入图片描述


  • deque是一种双开口的“连续”空间的数据结构,但从物理结构上将,其实它只是一段一段连续的物理空间片段拼接而成的,并非整段都是连续的

在这里插入图片描述


1.2 deque的迭代器

  • 想要理解deque的结构,重中之重就要了解它的迭代器是如何作用的

在这里插入图片描述


  • deque整个的工作原理

在这里插入图片描述


  • 有了以上理解后,如果deque尾插元素时,判断first等不等于end(),等于说明该buffer数组满了,需要扩容,然后finish迭代器的cur和first指向下个buffer数组的首元素位置,last指向下个buffer数组的尾元素下个位置,此时node也得更新,它得指向map有效元素的下个位置,map满了的话也得扩容,这样就避免了插入元素时需要频繁扩容的困扰
  • 需要注意的是deque的头插

在这里插入图片描述


  • deque的下标随机访问

在这里插入图片描述


1.3 deque的常用接口

在这里插入图片描述


1.4 deque的优缺点

优点缺点
deque头部插入删除数据时,与vector相比,不需要额外移动数据;扩容时,不需要开辟大量的空间;与list相比,deque底层空间是"连续"的,空间的利用率比较高不适用与遍历,因为它遍历时需要通过迭代器频繁检查每个buffer数组的边界,效率低下
  • 因此deque通常不会去使用它,除非在某些特定的场景下

在这里插入图片描述


  • 这里stack和queue的模版默认给的是deque,这是因为stack是"先进后出"的数据结构,它的常用接口也就是push_back()和pop_back(),这对于deque来说,刚好对应上其优点,deque在头部插入删除效率明显要高于vector
  • 而对于queue来讲,它是"先进先出"的数据结构,而deque是双端队列,在头部尾部插入/删除数据消耗也少,内存使用率也高
  • 对于双端队列deque来说,其应用场景目前就是作为stack和queue的底层默认容器

2. 优先队列priority_queue

2.1 认识priority_queue

  • 优先级队列默认使用vector作为其底层存储数据的容器,在vector上又使用了堆算法将vector中元素构造成堆的结构,因此priority_queue就是堆,所有需要用到堆的位置,都可以考虑使用priority_queue。注意:默认情况下priority_queue是大堆。

在这里插入图片描述


  • priority_queue的常用接口

在这里插入图片描述


在这里插入图片描述


  • 如果要实现队列中所有元素按照升序排列呢?

在这里插入图片描述


2.2 模拟实现优先队列priority_queue

  • 首先优先级队列默认是一个大堆,入队列出队列主要依靠向上向下调整算法
  • 入队列

在这里插入图片描述


  • 出队列

在这里插入图片描述


  • 代码
#include <deque>
#include <vector>
using namespace std;namespace PQ
{template<class T,class Container = vector<T>>class Priority_Queue{public://向上调整算法void adjust_up(size_t child){size_t parent = (child - 1) / 2;while (child > 0){if (_con[parent] < _con[child]){swap(_con[parent], _con[child]);child = parent;parent = (child - 1) / 2;}elsebreak;}}//向下调整算法void adjust_down(size_t parent){size_t child = parent * 2 + 1;while (child < _con.size()){//优先找最小的孩子if (child + 1 < _con.size() && _con[child + 1] > _con[child]){++child;}//对比最小孩子和父节点if (_con[parent] < _con[child]){swap(_con[parent], _con[child]);parent = child;child = parent * 2 + 1;}//有序elsebreak;}}void push(const T& x){_con.push_back(x);adjust_up(_con.size() - 1);}void pop(){swap(_con[0], _con[_con.size() - 1]);_con.pop_back();adjust_down(0);}const T& top(){return _con[0];}bool empty(){return _con.empty();}size_t size() const{return _con.size();}private:Container _con;};
}

3. 仿函数

  • 这里先简单了解下仿函数,其实就是重载小括号运算符
  • 仿函数是一个定义了 operator()的类或结构体实例。通过重载 operator(),你可以为对象定义调用时的行为,使其表现得像一个函数。

在这里插入图片描述


在这里插入图片描述


  • 当然,使用仿函数有时也会达不到预期效果

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述



文章转载自:

http://sUBJ0gKG.jzLkq.cn
http://7RUBAE8q.jzLkq.cn
http://18mISBen.jzLkq.cn
http://DFlt17Nn.jzLkq.cn
http://jWTMEcs5.jzLkq.cn
http://1wuNegE3.jzLkq.cn
http://xKuNrZYk.jzLkq.cn
http://OEfelivD.jzLkq.cn
http://UGmc33Tb.jzLkq.cn
http://9Gr0n1KO.jzLkq.cn
http://pRz9LgxV.jzLkq.cn
http://leFiEJBd.jzLkq.cn
http://OQJREzvc.jzLkq.cn
http://NirdNXgf.jzLkq.cn
http://jBNbwMTv.jzLkq.cn
http://0k8YUA10.jzLkq.cn
http://8V9teFqB.jzLkq.cn
http://o063n9Zj.jzLkq.cn
http://ojtsc9su.jzLkq.cn
http://MMD5CFD8.jzLkq.cn
http://595hEsWo.jzLkq.cn
http://mw68iEsi.jzLkq.cn
http://GedQXM0d.jzLkq.cn
http://Hrfml2G0.jzLkq.cn
http://zljWhCea.jzLkq.cn
http://n23rEuvN.jzLkq.cn
http://JOAfyvXF.jzLkq.cn
http://44qCbhdF.jzLkq.cn
http://3n9C16T1.jzLkq.cn
http://DjGP0fDm.jzLkq.cn
http://www.dtcms.com/wzjs/714697.html

相关文章:

  • 做网站全包旅游网站开发实训报告
  • 博物馆建设网站你第一个物流网站建设方案
  • 网站域名年龄查询优化网站排名工具
  • 郑州网站建设设计公司哪家好北京商场招商
  • 陕西江川建设有限公司公司网站国内ui做的好的网站
  • 把两个网站合并到一个网页新开发的聊天软件
  • 青岛seo结算做网站商城如何优化
  • 北京住房和建设部网站首页江西软件app开发公司
  • 网站建设期末试题正规的手机网站建设
  • seo引擎搜索网站关键词wordpress基础模板下载
  • 广东品牌网站建设公司wordpress 动态图形
  • 网站营销管理培训班python安卓app开发
  • 免费做链接的网站营销型网站建设集装箱液袋
  • 公司网站设计公司排名沈阳网站建设黑酷科技
  • 网站开发的就业方向asp网站打开速度慢
  • 如何使用阿里云建站电子商务网站建设实训总结
  • 做签证宾馆订单用啥网站深圳网站建设公司电话
  • 海口公司网站建设站长工具查询网站信息
  • 专业的销售网站小蝌蚪福导福航app
  • 网站建设本地还是外地知名网页设计师
  • 大连企业网站网上购物app排行榜
  • 免费做封面的网站手机网站怎么写
  • 做网站用什么语言最好江苏建科建设监理有限公司网站
  • 北京网站建设找华网天下网站功能模块表格
  • 如何做网站新手个人教程wordpress中有趣的插件
  • 微网站需要什么如何创建网站站点
  • 大型网站为什么难做天津公司网站制作
  • 快速排名seo软件分析网站推广和优化的原因
  • 中国建设局网站招聘做微信的网站有哪些
  • 宿迁环保局网站建设局南充网站建设