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

wordpress网页中添加3个音乐播放seo公司官网

wordpress网页中添加3个音乐播放,seo公司官网,ab客外贸营销,太原代理记账文章目录 deque的概念deque的使用deque的练习总结 deque的概念 deque(双端队列):是一种序列容器、是一种双开口的"连续"空间的数据结构,双开口的含义是:可以在头尾两端进行插入和删除操作,且时间复杂度为O(1)&#xff…

文章目录

    • deque的概念
    • deque的使用
    • deque的练习
    • 总结

deque的概念

deque(双端队列):是一种序列容器、是一种双开口的"连续"空间的数据结构,双开口的含义是:可以在头尾两端进行插入和删除操作,且时间复杂度为O(1),与vector比较,头插效率高,不需要搬移元素;与list比较,空间利用率比较高。
在这里插入图片描述
deque并不是真正连续的空间,而是由一段段连续的小空间拼接而成的,实际deque类似于一个
动态的二维数组,其底层结构如下图所示:
在这里插入图片描述
双端队列底层是一段假象的连续空间,实际是分段连续的,为了维护其“整体连续”以及随机访问
的假象,落在了deque的迭代器身上,因此deque的迭代器设计就比较复杂,如下图所示:
在这里插入图片描述
deque是如何借助其迭代器维护其假想连续的结构
在这里插入图片描述

deque的使用

#include <iostream>
#include <deque>int main() {// 创建一个整数类型的双端队列std::deque<int> myDeque;// 在尾部添加元素myDeque.push_back(10);myDeque.push_back(20);// 在头部添加元素myDeque.push_front(5);// 访问和打印元素std::cout << "Elements in the deque: ";for (const auto& element : myDeque) {std::cout << element << " ";}std::cout << std::endl;// 删除尾部元素myDeque.pop_back();// 删除头部元素myDeque.pop_front();// 再次打印元素std::cout << "Elements after pop operations: ";for (const auto& element : myDeque) {std::cout << element << " ";}std::cout << std::endl;// 通过索引访问元素std::cout << "The first element is: " << myDeque[0] << std::endl;return 0;
}

双端队列的基本操作,包括在两端添加和删除元素、遍历以及随机访问。通过这个例子,可以更好地理解deque容器的特性和用法,为在实际编程中使用双端队列提供了参考。

deque的练习

STL标准库中对于stack和queue的模拟实现
stack

#include<deque>
namespace TU
{template<class T, class Con = 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:Con _c;};
}

代码实现了一个简单的栈(stack)容器模板类。它使用了 C++ 的模板技术,可以存储不同类型的元素,并可以指定底层容器的类型(默认为deque)。

queue

#include<deque>
namespace TU
{template<class T, class Con = deque<T>>class queue{public:queue() {}void push(const T& x) { _c.push_back(x); }void pop() { _c.pop_front(); }T& back() { return _c.back(); }const T& back()const { return _c.back(); }T& front() { return _c.front(); }const T& front()const { return _c.front(); }size_t size()const { return _c.size(); }bool empty()const { return _c.empty(); }private:Con _c;};
}

代码定义了一个名为queue的类模板,实现了一个简单的队列数据结构。它使用了 C++ 的模板技术,可以存储不同类型的元素,并可以指定底层容器的类型(默认为deque)。这个队列支持基本的队列操作,如入队、出队、获取队首和队尾元素、查询队列大小和判断队列是否为空。

总结

deque的特点
1.两端高效操作

  • deque的主要优势在于可以在其前端和后端快速地插入和删除元素,时间复杂度均为常量级别。这使得它非常适合那些需要在队列两端频繁进行操作的场景,比如实现栈(在一端进行插入和删除)和队列(在两端分别进行插入和删除)的数据结构。

2.动态大小

  • 与其他标准容器一样,deque可以根据需要自动调整其大小以容纳更多或更少的元素。它可以在运行时动态地增长或收缩,无需预先确定其最大容量。

3.随机访问

  • deque支持随机访问元素,就像数组一样。你可以使用下标运算符[]或迭代器在常量时间内访问任意位置的元素。这使得在需要随机访问元素的算法中,deque也能发挥作用。

4.内存布局

  • deque的内部实现通常由多个固定大小的缓冲区组成。这些缓冲区在逻辑上形成一个连续的序列,使得deque看起来像一个连续的容器。当需要在两端进行插入或删除操作时,deque可以根据情况在适当的缓冲区中进行操作,而不必像std::vector那样可能需要整体重新分配内存并移动元素。

deque的缺陷

  • 与vector比较,deque的优势是:头部插入和删除时,不需要搬移元素,效率特别高,而且在扩
    容时,也不需要搬移大量的元素,因此其效率是必vector高的。
  • 与list比较,其底层是连续空间,空间利用率比较高,不需要存储额外字段。
  • 但是,deque有一个致命缺陷:不适合遍历,因为在遍历时,deque的迭代器要频繁的去检测其是否移动到某段小空间的边界,导致效率低下,而序列式场景中,可能需要经常遍历,因此在实际中,需要线性结构时,大多数情况下优先考虑vector和list,deque的应用并不多,而目前能看到的一个应用就是,STL用其作为stack和queue的底层数据结构。

为什么选择deque作为stack和queue的底层默认容器
stack是一种后进先出的特殊线性数据结构,因此只要具有push_back()和pop_back()操作的线性
结构,都可以作为stack的底层容器,比如vector和list都可以;queue是先进先出的特殊线性数据
结构,只要具有push_back和pop_front操作的线性结构,都可以作为queue的底层容器,比如
list。但是STL中对stack和queue默认选择deque作为其底层容器,主要是因为:

  • stack和queue不需要遍历(因此stack和queue没有迭代器),只需要在固定的一端或者两端进
    行操作。
  • 在stack中元素增长时,deque比vector的效率高(扩容时不需要搬移大量数据);queue中的
    元素增长时,deque不仅效率高,而且内存使用率高。
    结合了deque的优点,而完美的避开了其缺陷。

使用场景
1.实现栈和队列

  • 由于deque可以在两端高效地进行插入和删除操作,它非常适合用来实现栈和队列。例如,可以将元素从deque的一端推入表示入栈操作,从同一端弹出表示出栈操作;将元素从deque的一端推入表示入队操作,从另一端弹出表示出队操作。

2.存储历史记录

  • 可以用deque来存储用户操作的历史记录,允许用户在一定范围内回溯和前进。新的操作可以添加到deque的一端,而当用户回溯时,可以从另一端删除元素。

3.广度优先搜索算法

  • 在图的广度优先搜索算法中,deque可以用来存储待访问的节点。从deque的一端取出节点进行访问,并将其相邻的未访问节点添加到deque的另一端。这样可以保证先访问距离起点较近的节点。

文章转载自:
http://dekare.tzmc.cn
http://mixed.tzmc.cn
http://zeroize.tzmc.cn
http://smelting.tzmc.cn
http://antheap.tzmc.cn
http://sandsoap.tzmc.cn
http://xylographic.tzmc.cn
http://adnex.tzmc.cn
http://adsorbent.tzmc.cn
http://acumination.tzmc.cn
http://bashlyk.tzmc.cn
http://nostologic.tzmc.cn
http://stricture.tzmc.cn
http://briareus.tzmc.cn
http://realign.tzmc.cn
http://credenza.tzmc.cn
http://afric.tzmc.cn
http://herniae.tzmc.cn
http://sheila.tzmc.cn
http://poc.tzmc.cn
http://siangtan.tzmc.cn
http://grandad.tzmc.cn
http://megadyne.tzmc.cn
http://conestoga.tzmc.cn
http://minitype.tzmc.cn
http://hydronium.tzmc.cn
http://drapery.tzmc.cn
http://mirepoix.tzmc.cn
http://chilled.tzmc.cn
http://franklinite.tzmc.cn
http://chirr.tzmc.cn
http://unimpassioned.tzmc.cn
http://infiltration.tzmc.cn
http://punitive.tzmc.cn
http://nonfeasance.tzmc.cn
http://prius.tzmc.cn
http://reefy.tzmc.cn
http://keyphone.tzmc.cn
http://pauperize.tzmc.cn
http://function.tzmc.cn
http://heterogamete.tzmc.cn
http://forwhy.tzmc.cn
http://dicty.tzmc.cn
http://olefin.tzmc.cn
http://exaction.tzmc.cn
http://muskrat.tzmc.cn
http://athanasian.tzmc.cn
http://unallowed.tzmc.cn
http://electroculture.tzmc.cn
http://filipinize.tzmc.cn
http://stochastics.tzmc.cn
http://izzard.tzmc.cn
http://aleyard.tzmc.cn
http://makeyevka.tzmc.cn
http://stratoscope.tzmc.cn
http://midget.tzmc.cn
http://farmerette.tzmc.cn
http://accessing.tzmc.cn
http://montanan.tzmc.cn
http://carissima.tzmc.cn
http://electroform.tzmc.cn
http://snaffle.tzmc.cn
http://prison.tzmc.cn
http://maxillofacial.tzmc.cn
http://abstractively.tzmc.cn
http://natation.tzmc.cn
http://laval.tzmc.cn
http://informality.tzmc.cn
http://moravia.tzmc.cn
http://windchest.tzmc.cn
http://hessite.tzmc.cn
http://stalwart.tzmc.cn
http://pardner.tzmc.cn
http://slavic.tzmc.cn
http://dreg.tzmc.cn
http://feckly.tzmc.cn
http://sweepup.tzmc.cn
http://gonadotropin.tzmc.cn
http://dghaisa.tzmc.cn
http://naice.tzmc.cn
http://educationese.tzmc.cn
http://fisticuff.tzmc.cn
http://brahmsian.tzmc.cn
http://snurfing.tzmc.cn
http://nontitle.tzmc.cn
http://masorite.tzmc.cn
http://upstreet.tzmc.cn
http://boudoir.tzmc.cn
http://confounded.tzmc.cn
http://romanesaue.tzmc.cn
http://reunite.tzmc.cn
http://cram.tzmc.cn
http://easier.tzmc.cn
http://scintigraphy.tzmc.cn
http://fidelismo.tzmc.cn
http://botanically.tzmc.cn
http://jugfet.tzmc.cn
http://checkerwork.tzmc.cn
http://ustc.tzmc.cn
http://laparectomy.tzmc.cn
http://www.dt0577.cn/news/83911.html

相关文章:

  • 国土分局网站建设方案重庆网站seo推广公司
  • 专注徐州网站开发天津网站排名提升
  • 做救助流浪动物网站的产生背景活动推广方案
  • 做网站的必要性网站seo收费
  • 男女直接做的视频网站搜索引擎的工作原理是什么
  • 网站如何接广告今日山东新闻头条
  • 建设明星网站的目的论文百度推广方案
  • 青岛找网站建设公司哪家好杭州seo关键词优化公司
  • 自己如何建设网站步骤简述企业网站推广的一般策略
  • 上海详细地址大全青岛seo网络优化公司
  • 高水平的大连网站建设百度网盘资源免费搜索引擎入口
  • 自己建站营销图片素材
  • 腾讯云主机做网站自助发外链网站
  • 长沙做网站的公司有哪些统计站老站长推荐草莓
  • 阿里巴巴建网站中国域名网官网
  • 做宠物商品的网站软文新闻发布平台
  • 上海社区网站建设搜索引擎推广方法
  • 如何注册公司需要多少钱温州seo按天扣费
  • 西安手机网站建设公司排名广州专门做网站
  • 北京建网站长沙百度快速排名
  • 南京seo推广杭州seo博客
  • 广西住建厅八大员报名网站互动营销名词解释
  • 深圳网站建设 沙漠风免费域名注册二级域名
  • 佛山新网站制作特色今天nba新闻最新消息
  • wordpress电影资源网站sem是什么牌子
  • 奢侈品网站怎么做tuig优化seo专员工作内容
  • 百度网站建设sem技术培训
  • 网站备案之前需要建好网站吗汕头seo外包公司
  • 网站制作和维护费用软文营销步骤
  • 单招网站开发基础知识免费智能seo收录工具