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

中国建设银行个人网站登录下载别人网站的asp

中国建设银行个人网站登录,下载别人网站的asp,承德公司做网站,响应式网站设计制作 作者简介#xff1a;დ旧言~#xff0c;目前大二#xff0c;现在学习Java#xff0c;c#xff0c;c#xff0c;Python等 座右铭#xff1a;松树千年终是朽#xff0c;槿花一日自为荣。 目标#xff1a;能手撕stack和queue模拟 毒鸡汤#xff1a;… 作者简介დ旧言~目前大二现在学习JavaccPython等 座右铭松树千年终是朽槿花一日自为荣。 目标能手撕stack和queue模拟 毒鸡汤过错是暂时的遗憾而错过则是永远的遗憾 望小伙伴们点赞收藏✨加关注哟  前言 手撕stack和queue对比在数据结构中的模拟要比较简单为什么呢因为我们学习了参数模板这块我们可以调用所以模拟起来比较简单具体是如何简单法呢我们进入正文 ⭐主体 这里我们创建三个文件stack.hqueue.htest.cpp。 第一个迭代器模式 迭代器模式就是在不暴露底层的细节的前提下通过封装给用户提供统一的接口让用户访问容器里面的数据我们使用的每个容器都可以通过创建迭代器变量的方式来访问容器里面的内容并且访问的方式都是一样的*迭代器变量可以得到并修改指定位置的数据迭代器可以让迭代器变量指向容器的下一个元素通过上面的两个操作不管是vector容器还是string容器还是后面要学的更加复杂的容器我们都可以很简单的访问容器里面的内容但是这些迭代器底层实现的原理是一样的吗vector和string迭代器是通过创建一个指针变量来实现的而list迭代器是创建一个类通过这个类对list的数据进行封装来实现的不同的容器的迭代器实现的方法也各不相同但是作为使用者来说我们根本就不用了解这些迭代器的底层实现我们会用就行并且迭代器的出现很大程度上降低了我们学习的成本并且迭代器的出现还有助于维护数据的安全如果我们认为的操作容器里面的数据的话搞不好就将哪个重要的数据删除了将另外一个地方的数据覆盖了所以迭代器模式就对容器里面的数据进行了一下封装我们要访问这些数据就只能通过迭代器的方式来进行访问这样即降低了学习成本又保护了数据的安全我们把这样的设计模式成为迭代器模式。第二个适配器模式 在之前的学习中我们知道stack对数据管理的方式是先入栈的数据后出栈后入栈的数据先出栈我们还知道queue对数据管理的方式是先入队列的数据先出队列后入队列的数据后出队列这是两个容器对数据处理的方式虽然这种处理数据的方式属于这些容器的但是其他的容器也可以实现这样的功能比如说vector和list都可以在容器的头部或者尾部插入或删除数据如果我们只让vector或者list在容器的头部尾部插入删除数据的话那是不是就相当于是stack了呢如果我们只让vector或者list在头部删除数据在尾部插入数据的话那这是不是就相当于queue了呢所以在实现一个容器或者功能的时候我们可以用现有东西进行一些简单的修改或者封装从而实现你想要的东西那么这就是适配器模式用已有的东西通过封装转换出来你想要的东西那么我们这里的stack和queue就可以通过适配器模式来实现。 stack模拟实现 模拟实现C的栈时应该要考虑用什么作为它的底层目前来看貌似动态数组vector是个不错的选择因为栈只需要在栈顶插入和删除元素。 第二个模板参数的默认值给成vectorT这样就不需要用户自己传递第二个参数了。实现stack中的函数也很容易只需要在函数内部调用vector的函数即可。 框架如下 #includeiostream #includevector #includelistusing namespace std; namespace lyk {templateclass T, class continer vectorintclass stack{public:private:continer con;}; } 元素入栈 首先来实现一下stack的push函数因为stack在插入数据的时候只能在尾部插入数据所以在stack的push函数里面就可以直接调用容器con的push_back函数来尾插数据那么该函数的实现如下 // 元素入栈 void push(const T val) {con.push_back(val); } 元素出栈 stack中删除数据也只能删除尾部数组所以实现pop函数的时候就可以直接调用容器con的pop_back函数来删除数据那这里的代码就如下 // 元素出栈 void pop() {con.pop_back(); } 获取元素有效个数 复用vector类的函数即可获得有效元素的个数代码如下 // 返回栈中元素个数 size_t size() {return con.size(); } 判断栈是否为空 复用vector类的判空函数代码如下 // 判断栈是否为空 bool empty() {return con.empty(); } 返回栈顶元素 代码如下 // 返回栈顶元素 const T top() {return con.back(); } stack整体代码 #includeiostream #includevector #includelistusing namespace std; namespace lyk {templateclass T, class continer vectorintclass stack{public:// 元素入栈void push(const T val){con.push_back(val);}// 元素出栈void pop(){con.pop_back();}// 返回栈中元素个数size_t size(){return con.size();}// 判断栈是否为空bool empty(){return con.empty();}// 返回栈顶元素const T top(){return con.back();}private:continer con;};// 测试void test_stack(){lyk::stackint s1;s1.push(1);s1.push(2);s1.push(3);s1.push(4);while (!s1.empty()){cout s1.top() ;s1.pop();}cout endl;lyk::stackint, listint s2;s2.push(4);s2.push(3);s2.push(2);s2.push(1);while (!s2.empty()){cout s2.top() ;s2.pop();}} } 运行结果 queue模拟实现 同样的道理queue也要容纳各种数据也可以由各种容器作为底层来容纳数据所以queue也得创建一个模板并且模板里面也得有两个参数因为queue是在容器的头部删除数据在容器的尾部插入数据所以给第二个参数的缺省值最好是deque那么这里的代码就如下 #includeiostream #includevector #includelist #includedequenamespace lyk {templateclass T, class continer dequeTclass queue{public:private:continer con;};} 元素入队列 因为queue插入数据是在容器的尾部插入数据所以在实现queue的push函数时可以通过调用con的push_back函数来实现那这里的代码如下 // 元素入队列 void push(const T val) {con.push_back(val); } 元素出队列 queue的pop函数是在容器的头部删除数据所以这里可以调用容器的pop_front函数来实现那么这里的代码如下 // 元素出队列 void pop() {con.pop_front(); } 返回队列元素个数 调用内部容器函数来进行实现那么这里的代码就如下 // 返回队列元素个数 size_t size() {return con.size(); } 判断队列是否为空 调用内部容器函数来进行实现那么这里的代码就如下 // 判断队列是否为空 bool empty() {return con.empty(); } 返回队头元素的引用 调用内部容器函数来进行实现那么这里的代码就如下 // 返回队头元素的引用 const T front() {return con.front(); } 返回队头元素的引用 调用内部容器函数来进行实现那么这里的代码就如下 // 返回队头元素的引用 const T back() {return con.back(); } queue整体代码 #includeiostream #includevector #includelist #includedequenamespace lyk {templateclass T, class continer dequeTclass queue{public:// 元素入队列void push(const T val){con.push_back(val);}// 元素出队列void pop(){con.pop_front();}// 返回队列元素个数size_t size(){return con.size();}// 判断队列是否为空bool empty(){return con.empty();}// 返回队头元素的引用const T front(){return con.front();}// 返回队头元素的引用const T back(){return con.back();}private:continer con;};void test_queue(){//bit::queueint q;// // vector不能适配//bit::queueint, vectorint q;lyk::queueint, listint q;q.push(1);q.push(2);q.push(3);q.push(4);while (!q.empty()){cout q.front() ;q.pop();}cout endl;}} 运行结果 结束语 今天内容就到这里啦时间过得很快大家沉下心来好好学习会有一定的收获的大家多多坚持嘻嘻成功路上注定孤独因为坚持的人不多。那请大家举起自己的小手给博主一键三连有你们的支持是我最大的动力回见。
http://www.pierceye.com/news/891307/

相关文章:

  • 做海报可以在哪些网站下载素材一键生成装修效果图app
  • 福田区住房和建设局官方网站wordpress仿凡客商城主题
  • 做下载网站用什么程序好深圳公司注册服务
  • 猎头网站模板济源专业网站建设(制作网站)
  • kotlin做网站单页应用网站
  • 邢台网站改版开发长沙教育网站开发
  • 网站开发人员必备技能网站背景图片自动切换
  • 企业网站建立策划书有网站吗给一个
  • 外贸建站有哪些公司建设主管部门网站查询
  • 泰安市网站建设广州优化公司哪家好
  • 手机网游传奇西安关键词优化平台
  • 网站建设公司权威机构3d虚拟人物制作软件
  • 北京网站建设seo公司哪家好阿里巴巴企业邮箱登录入口
  • 广州shopify代建站新产品代理
  • html5网站特点在线搜索引擎
  • 网站搭建服务平台网站备案 关闭网站
  • 高端建站收费标准宣传设计网站
  • 视频网站数据库设计手机企业网站设计
  • 广安发展建设集团有限公司门户网站竞价推广代运营服务
  • 济南mip网站建设公司山西住房建设厅网站
  • 兰州需要做网站的公司有哪些做词云的网站
  • 红酒公司网站建设模板6841如何通过网站获取qq
  • 写一张营销型网站页面多长时间微动漫怎么制作
  • 网站架构设计师月薪多少柳州团购网站建设
  • 深圳宝安沙井网站建设网络营销推广主要做什么?有哪些方法和技巧?
  • 图书馆门户网站建设的意义开票 网站建设
  • 如何用家用电脑做网站wordpress的伪静态
  • 东营市城市和建设管理局网站网络基础知识点
  • 怎么制作网站链接转发视频网页游戏开服表怎么取消
  • 360网站seo怎么做北京商场关闭通知