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

江阴市城乡建设网站proplayer wordpress

江阴市城乡建设网站,proplayer wordpress,东莞市外贸网站建设企业,做外贸网站效果好吗C普通队列 算法竞赛中一般用静态数组来模拟队列,或者使用STL queue。使用C的STL queue时,由于不用自己管理队列,因此代码很简洁。队列的部分操作如下。 C优先队列 很多算法需要用到一种特殊的队列:优先队列。它的特点是最优数据…

C++普通队列

算法竞赛中一般用静态数组来模拟队列,或者使用STL queue。使用C++的STL queue时,由于不用自己管理队列,因此代码很简洁。队列的部分操作如下。

C++优先队列

很多算法需要用到一种特殊的队列:优先队列。它的特点是最优数据始终位于队首。

优先队列的效率很高:新数据插入队列生成新的最优队首元素,计算复杂度是O(logn);弹出最优的队首元素后在队列中计算出新的最优队首元素,计算复杂度也是O(logn)。

C++ STL优先队列priority_queue用堆来实现,堆是用二叉树实现的一种数据结构。

定义:priority_queue<Type, Container, Functional>。

Type是数据类型,Container是容器类型(用数组实现的容器,默认是vector),Functional是比较的方式。当需要使用自定义的数据类型时才需要传入这3个参数,而使用基本数据类型时,只需要传入数据类型,默认是大顶堆,堆顶是最大值。

C++链表

链表的编程实现有动态链表、静态链表、STL list等多种方法。在算法竞赛中,为了加快编程速度,一般使用静态链表或STL list。

STL list:

如果读者嫌麻烦,则可以使用C++的STL list,这样就不用自己管理链表。非常方便,本文也是直接讲解STL list,加快在算法竞赛中的编程速度。

STL list是双向链表,通过指针访问结点数据,它的内存空间可以是不连续的,使用它能高效地删除和插入结点。就此意义而言,list是真正的链表。

list中的构造函数:

list() 声明一个空列表;

list(n) 声明一个有n个元素的列表,每个元素都是由其默认构造函数T()构造出来的

list(n,val) 声明一个由n个元素的列表,每个元素都是由其复制构造函数T(val)得来的

list(first,last) 声明一个列表,其元素的初始值来源于由区间所指定的序列中的元素

常用函数: 

begin()和end():通过调用list容器的成员函数begin()得到一个指向容器起始位置的iterator,可以调用list容器的 end() 函数来得到list末端下一位置,相当于:int a[n]中的第n+1个位置a[n],实际上是不存在的,不能访问,经常作为循环结束判断结束条件使用。

push_back() 和push_front():使用list的成员函数push_back和push_front插入一个元素到list中。其中push_back()从list的末端插入,而 push_front()实现的从list的头部插入。

empty():利用empty() 判断list是否为空。

resize(): 如果调用resize(n)将list的长度改为只容纳n个元素,超出的元素将被删除,如果需要扩展那么调用默认构造函数T()将元素加到list末端。如果调用resize(n,val),则扩展元素要调用构造函数T(val)函数进行元素构造,其余部分相同。

clear(): 清空list中的所有元素。

front()和back(): 通过front()可以获得list容器中的头部元素,通过back()可以获得list容器的最后一个元素。但是有一点要注意,就是list中元素是空的时候,这时候调用front()和back()会发生什么呢?实际上会发生不能正常读取数据的情况,但是这并不报错,那我们编程序时就要注意了,个人觉得在使用之前最好先调用empty()函数判断list是否为空。

pop_back和pop_front():通过删除最后一个元素,通过pop_front()删除第一个元素;序列必须不为空,如果当list为空的时候调用pop_back()和pop_front()会使程序崩掉。

swap():交换两个链表(两个重载),一个是l1.swap(l2); 另外一个是swap(l1,l2),都可能完成连个链表的交换。

reverse():通过reverse()完成list的逆置。

merge():合并两个链表并使之默认升序(也可改),l1.merge(l2,greater<int>()); 调用结束后l2变为空,l1中元素包含原来l1 和 l2中的元素,并且排好序,升序。其实默认是升序,greater<int>()可以省略,另外greater<int>()是可以变的,也可以不按升序排列。

insert():在指定位置插入一个或多个元素(三个重载):

l1.insert(l1.begin(),100); 在l1的开始位置插入100。

l1.insert(l1.begin(),2,200); 在l1的开始位置插入2个100。

l1.insert(l1.begin(),l2.begin(),l2.end());在l1的开始位置插入l2的从开始到结束的所有位置的元素。

erase():删除一个元素或一个区域的元素(两个重载)

l1.erase(l1.begin()); 将l1的第一个元素删除。

l1.erase(l1.begin(),l1.end()); 将l1的从begin()到end()之间的元素删除。

http://www.yayakq.cn/news/863145/

相关文章:

  • 湿地公园网站建设模块网站建设
  • 凡科建设网站如何对话框哪个网站的地图可以做分析图
  • 计算机应用技术网站开发基础知识学编程用什么笔记本电脑比较好
  • 一个网站通常包含多个网页电商网站 案例
  • 世界建筑设计网站树莓派安装wordpress
  • 微网站可以自己做吗科技类网站色彩搭配
  • 网站流量的做制作中秋网页素材
  • 做网站申请完域名后做什么做样子的网站
  • 不正规网站制作网站推广智选刺盾云下拉
  • 建手机wap网站大概多少钱邢台123最新事件
  • 如何做网站图片奢做品二手 哪个网站好
  • 做网站分为几种什么是网络营销美好小火锅的线上推广平台有哪些
  • 网站代理服务器有问题创联互动建设网站
  • ajax做购物网站网站建设经济可行性报告
  • 网站建设寻找可以途径爱站长尾关键词挖掘工具
  • 做文献的ppt模板下载网站温州网站建设设计公司
  • 买房网站排名网站制作哪家好又便宜
  • 线上教学网站搭建平台筑巢引凤
  • 苏州高端网站建设kgwl青柠影视在线观看免费高清电视剧
  • 做男装海报的素材网站西宁那有做网站的
  • 做网站收录怎么制作图片加音乐
  • 基于h5的wap网站开发做美食视频的网站
  • 徐州企业网站推广天辰工程信息网官网
  • 网站建设摘要建设工程和工程建设
  • 珠海网站建设wordpress模板 购买
  • 唐山正规做网站的公司哪家好商务网站建设与维护考试
  • 企业网站手机端如何做网站服务
  • 沈阳工程建设信息网站电气监理货代网站制作
  • 茶叶怎么做网站销售怎样进入医院公众号
  • 网站开发用户登录前 登录后有帮忙做阿里巴巴网站的吗