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

网站开发的系统需求北京专业做网站公司

网站开发的系统需求,北京专业做网站公司,俄罗斯最新消息今天新闻,wordpress移动端访问文章目录 deque的概念deque的使用deque的练习总结 deque的概念 deque(双端队列)#xff1a;是一种序列容器、是一种双开口的连续空间的数据结构#xff0c;双开口的含义是#xff1a;可以在头尾两端进行插入和删除操作#xff0c;且时间复杂度为O(1)#xff… 文章目录 deque的概念deque的使用deque的练习总结 deque的概念 deque(双端队列)是一种序列容器、是一种双开口的连续空间的数据结构双开口的含义是可以在头尾两端进行插入和删除操作且时间复杂度为O(1)与vector比较头插效率高不需要搬移元素与list比较空间利用率比较高。 deque并不是真正连续的空间而是由一段段连续的小空间拼接而成的实际deque类似于一个 动态的二维数组其底层结构如下图所示 双端队列底层是一段假象的连续空间实际是分段连续的为了维护其“整体连续”以及随机访问 的假象落在了deque的迭代器身上因此deque的迭代器设计就比较复杂如下图所示 deque是如何借助其迭代器维护其假想连续的结构 deque的使用 #include iostream #include dequeint main() {// 创建一个整数类型的双端队列std::dequeint 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 #includedeque namespace TU {templateclass T, class Con 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:Con _c;}; }代码实现了一个简单的栈stack容器模板类。它使用了 C 的模板技术可以存储不同类型的元素并可以指定底层容器的类型默认为deque。 queue #includedeque namespace TU {templateclass T, class Con dequeTclass 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和listdeque的应用并不多而目前能看到的一个应用就是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://www.tj-hxxt.cn/news/227243.html

相关文章:

  • 广州公司网站提供最好的搜索引擎
  • 做网站阜阳现在ps做网站的尺寸
  • 忘记网站后台用户名wordpress4.9教学
  • 盐城网站建设策划方案wordpress手机版设置密码
  • 教学网站开发应用方案湖州网站制作报价
  • 一个公司网站备案吗wordpress弹框
  • 织梦网站地图调用全站文章注册代理公司流程及费用
  • 网站后台培训方案wordpress oss cdn
  • 网站建设上传和下载如何建立网站管理系统
  • 服装网站建设策划案谷歌搜索引擎下载
  • 企业网站合同wordpress告白墙
  • 韶关营销型网站建设网站建设设置背景图片
  • 布吉附近公司做网站建设多少钱wordpress从指定目录获取文章
  • 代码制作软件佛山优化网站方法
  • 营销型网站建设明细报价表东莞临时工最新招聘
  • 网站制作内容dns是不是做网站用的
  • 注册公司怎么注册啊东莞seo排名优化公司
  • 网站地图怎么做用云主机做网站
  • 网站热力图工具国际外贸平台排名
  • wordpress5.0大更新一键优化下载
  • 查询站长工具会给网站带来外链这样好吗荆州哪有做网站的公司
  • 郓城县城乡和建设局网站二级域名网站权重
  • 深圳网站建设哪个最好公司页面设计
  • 长沙网站建设制作网页版梦幻西游虎灯令
  • php开发网站流程担路网络科技有限公司的服务
  • 重庆网站建设价格页面运营
  • 网站建设维护费怎么说农业公司网站源码
  • 建设网站公司专业服务wordpress标签组合
  • 临沂网站建设技术托管公司人员管理系统
  • 免费生成网站的appwordpress安全设置