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

做网站如何把栏目放到首页成都百度seo公司

做网站如何把栏目放到首页,成都百度seo公司,做web网站,简述网站建设优劣的评价标准目录 一、stack(栈) 二、queue(队列) 三、deque(双向队列) 四、容器适配器总结 在C 的标准模板库(STL)中,stack、queue和priority_queue是非常实用的容器适配器&…

目录

一、stack(栈)

二、queue(队列)

三、deque(双向队列)

四、容器适配器总结


在C++ 的标准模板库(STL)中,stack、queue和priority_queue是非常实用的容器适配器,它们为我们处理数据提供了极大的便利。今天,就让我们深入了解一下它们的原理、使用方法以及相关代码实现。

一、stack(栈)

1. 原理介绍

栈是一种遵循后进先出(LIFO)原则的容器适配器。它的删除操作只能从容器的一端进行,即只能在栈顶插入和提取元素。在STL中,stack默认使用deque作为其底层容器,当然也可以指定vector或list等其他符合要求的容器。

2. 使用方法

- 构造函数: stack<T> s  可以创建一个空栈, T  为栈中元素的类型。

- 判空操作: s.empty()  用于检测栈是否为空,如果为空返回  true ,否则返回  false 。

- 获取元素个数: s.size()  返回栈中元素的个数。

- 获取栈顶元素: s.top()  返回栈顶元素的引用。

- 压栈操作: s.push(x)  将元素  x  压入栈中。

- 弹栈操作: s.pop()  将栈顶元素弹出。

3. 代码示例

cpp#include <iostream>#include <stack>using namespace std;int main() {stack<int> s;s.push(1);s.push(2);s.push(3);while (!s.empty()) {cout << s.top() << " ";s.pop();}return 0;}

1. 模拟实现

cpp#include <vector>namespace bite {template<class 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:std::vector<T> _c;};}

二、queue(队列)

1. 原理介绍

队列是一种遵循先进先出(FIFO)原则的容器适配器。元素从队尾入队列,从队头出队列。在STL中,queue默认使用deque作为底层容器,也可指定list等符合条件的容器。

2. 使用方法

- 构造函数: queue<T> q  创建一个空队列, T  为队列中元素的类型。

- 判空操作: q.empty()  检测队列是否为空,为空返回  true ,否则返回  false 。

- 获取元素个数: q.size()  返回队列中有效元素的个数。

- 获取队头元素: q.front()  返回队头元素的引用。

- 获取队尾元素: q.back()  返回队尾元素的引用。

- 入队操作: q.push(x)  在队尾将元素  x  入队列。

- 出队操作: q.pop()  将队头元素出队列。

3. 代码示例

cpp#include <iostream>#include <queue>using namespace std;int main() {queue<int> q;q.push(1);q.push(2);q.push(3);while (!q.empty()) {cout << q.front() << " ";q.pop();}return 0;}

1. 模拟实现

cpp#include <list>namespace bite {template<class 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:std::list<T> _c;};}

三、deque(双向队列)

1. 原理介绍

deque (双端队列)是一种数据结构,通常用连续内存空间存储元素,通过维护头部和尾部指针来实现双端操作。插入和删除元素在两端都能高效进行,时间复杂度通常为O(1),常用于缓存、广度优先搜索等场景。

2. 使用方法

std::deque<int> d; ;在前端插入

 d.push_front(1) ,后端插入 

d.push_back(2) ;前端删除 

d.pop_front() ,后端删除

 d.pop_back() ,访问元素 d[0] 获取首个元素。

3. 代码示例


 

#include <iostream>
#include <deque>
using namespace std;int main() {// 创建一个空的双端队列deque<int> d;// 在队列后端添加元素d.push_back(1);d.push_back(2);// 在队列前端添加元素d.push_front(3);d.push_front(4);// 输出双端队列的元素cout << "双端队列:";for (int num : d) {cout << num << " ";}cout << endl;// 从后端弹出元素int back_pop = d.back();d.pop_back();cout << "从后端弹出的元素:" << back_pop << endl;// 从前端弹出元素int front_pop = d.front();d.pop_front();cout << "从前端弹出的元素:" << front_pop << endl;// 输出操作后的双端队列的元素cout << "操作后的双端队列:";for (int num : d) {cout << num << " ";}cout << endl;return 0;
}

1. 注意事项

- 默认情况下, deque是大堆。

 C++中 deque 的注意事项及示例:
 
1. 迭代器失效:在 deque 中插入或删除元素后,除了指向被删除元素的迭代器外,其他迭代器可能仍然有效,但可能会导致迭代器重新定位。
 

cpp#include <iostream>
#include <deque>
using namespace std;int main() {deque<int> d = {1, 2, 3, 4, 5};auto it = d.begin();d.insert(it, 0);  // 插入元素后,迭代器it仍然有效for (int num : d) {cout << num << " ";}cout << endl;return 0;
}


 
 
1. 容量和内存管理: deque 的内存管理相对复杂,它通过分段连续内存实现。与 vector 相比, deque 在头部插入和删除元素更高效,因为不需要移动大量元素来调整内存。
 

cpp#include <iostream>
#include <deque>
using namespace std;int main() {deque<int> d;for (int i = 0; i < 10; ++i) {d.push_front(i);  // 在头部高效插入元素}for (int num : d) {cout << num << " ";}cout << endl;return 0;
}


 
1. 边界检查:访问 deque 元素时,要确保索引在有效范围内,否则会导致未定义行为。使用 at() 成员函数会进行边界检查并在越界时抛出异常,而使用 [] 操作符不会进行检查。

cpp#include <iostream>
#include <deque>
using namespace std;int main() {deque<int> d = {10, 20, 30};// 使用[]操作符,不进行边界检查cout << d[2] << endl;// 使用at()进行边界检查,越界会抛出异常// cout << d.at(10) << endl;  // 取消注释会抛出异常return 0;
}

四、容器适配器总结

stack、queue和deque作为容器适配器,为我们在不同场景下处理数据提供了便捷的方式。stack适用于需要后进先出逻辑的场景,比如函数调用栈;queue适用于先进先出的场景,像任务队列;deque (双端队列)在多种场景下为数据处理提供了便捷方式,

通过深入了解它们的原理和使用方法,并结合实际代码示例,我们能更好地在C++ 编程中运用这些强大的工具,提升代码的效率和可读性。希望这篇博客能对你理解和使用这些容器适配器有所帮助。

http://www.dtcms.com/wzjs/392368.html

相关文章:

  • 个人可以做招聘网站吗下载百度安装到桌面
  • 做网站环境配置遇到的问题产品推广怎么做
  • 网站图标素材刚刚济南发通知
  • 响应式网站页面设计优化关键词的方法包括
  • 网站收录是什么意思做网站哪个公司最好
  • 企业网站建设招标技术标准谷歌搜索入口
  • 代售网站建设搜索引擎网站大全
  • 网站运营seo线上宣传渠道
  • 昆明网站建设系统一个平台怎么推广
  • 如何连接到网站服务器引流推广平台软件
  • 301的网站用什么来做网站建设的步骤
  • 建设通相似网站百度知道小程序
  • 做网站需要招聘内容范本广告投放平台
  • 网站手机端 怎么做最新引流推广方法
  • 用闲置的安卓手机做网站服务器如何推广软件
  • 建设网站需要懂什么淘宝美工培训推荐
  • 怎么看出网站有没有做404页面太原自动seo
  • 全网投放广告的渠道有哪些seo人员的相关薪资
  • 在淘宝做网站可以改域名吗seo优化有百度系和什么
  • 网站建设原则包括哪些方面乔拓云智能建站
  • 中国核工业华兴建设有限公司seo学途论坛网
  • 服务号与wordpress关键词seo如何优化
  • 德州市德城区城乡建设局网站微信营销怎么做
  • 汶上网站建设哪家便宜seo优化师培训
  • 长沙做网站的公司哪家最好今日国际新闻头条15条简短
  • 在国外视频网站做中国美食上海百度seo优化
  • 做网站设计哪家好厦门关键词优化平台
  • 宁波制作企业网站营销助手下载app下载
  • 营销外包网站上海seo推广
  • 校友网站建设的意义想做个网络推广