从来不预设的人生最为甜蜜

 

一个巨富与一个乞丐都想去世界旅行。三年过后,乞丐带在平等独自破碗和一个破蛇皮口袋从世界边缘回到了家乡,而富人也还没有起来走动,每天还当预设好欠怎么去才最好安全。

                  

虽在前方几龙,舍友忽然决定使考研,她说其思量考经济学。

平、一般介绍

于文科生来说,这是啊概念?这象征在单存不至之七只月日里,她一旦自学让具备大学生都望而却步的高数、线性代数还有概率论,意味着它于将咱的正规课考过关的以还得自学三门经济学课本。

     STL(StandardTemplate
Library),即正式模板库,是一个享有工业强度的,高效之C++程序库。它让盛于C++标准程序库(C++Standard
Library)中,是ANSI/ISOC++标准中最新的呢是太有革命性的平等片。该库包含了森每当微机科学领域里所常用之核心数据结构以及基本算法。为广泛C++程序员们提供了一个但扩大的使用框架,高度体现了软件之不过复用性。

自我问其,换个规范挺吧?文科考经济学太为难了。

 
   从逻辑层次来拘禁,在STL中反映了泛型化程序设计的思想(genericprogramming),引入了森初的名词,比如像需求(requirements),概念(concept),模型(model),容器(container),算法(algorithmn),迭代子(iterator)等。与OOP(object-orientedprogramming)中之多态(polymorphism)一样,泛型也是同样种软件的复用技术;

它摇摇头,她说自己原先就十分爱经济学,可是自打高中文理分科后虽又为没有机会上经济学了,她要是更开始好的不过爱。

    
 从落实层次看,整个STL是坐相同种植类型参数化(typeparameterized)的道贯彻之,这种方法基于一个于早先C++标准被并未出现的言语特色–模板(template)。如果翻开任何一个版本的STL源代码,你就算会意识,模板作为整合整个STL的木本是平等件千真的万确的业务。除此之外,还有众多C++的新特征也STL的兑现提供了便民;

本人兢兢业业的提问其,考只是怎么惩罚?她乐着说,我们才二十东,考不了就再也来平等年,怕什么?我以前就是以让了和睦无比多之预设,这档子事开不成事怎么惩罚?那个使是败退了怎么处置?我父母怎么收拾,我的恋人见面怎么看自己。就是盖这些预设,我根本不曾放下一切干过自己真正爱的作业。

其次、STL的六非常组件

立几龙,她为自己的靶子初步了高三般拼命的活,完全改掉了原无所事事懒散惯了底师,因为它们深信其的人生没有预设,一切想如果之都可能产生,一切想使的且见面落实。

·    
   容器(Container),是同栽多少结构,如list,vector,和deques ,以模板类的法提供。为了看容器被之多少,可以使由容器类输出的迭代器;

是什么,我们才二十几东,为什么而叫人生如此多预设呢?因为我们太理性,我们连被协调搜索各种借口来否认自己想做的政工,所以我们放弃了协调喜欢的从事,所以我们自然不快乐。

·    
   迭代器(Iterator),提供了走访容器中目标的法。例如,可以使用部分迭代器指定list或vector中的大势所趋范围之目标。迭代器就像一个指针。事实上,C++的指针也是平种植迭代器。但是,迭代器也堪是那些定义了operator*()以及任何类似于指针的操作符地方法的近乎对象;

高中同班的一个幼童,家是乡村之,家境不极端好还有一个不懂事的兄长。高中的上我与她是不过好的恋人,我们有限个极端特别之期待就是是始平贱自己的蛋糕店。

·    
   算法(Algorithm),是故来操作容器中之数目的沙盘函数。例如,STL用sort()来对一个vector中之数码进行排序,用find()来找一个list中之靶子,函数本身和她们操作的数量的结构与项目无关,因此他们好当起简单数组到高度复杂容器的另外数据结构上用;

高考后,她以故里那边读了相同所专科学校,学的吗非是协调喜爱的正式。上了高校,因为环境暨去,我们老少沟通。

·        仿函数(Function
object,仿函数(functor)又称作函数对象(functionobject),其实就是重载了()操作符的struct,没有啊特别的地方

可是就于上个月,她突然打电话报告自己说其以本土的市里开了同一寒蛋糕店。她说它特别一读了一致学期就私自的退学了,她未思量当大学里挥霍自己之常青,她惦记如果提到几自己真正喜爱的。

·    
   迭代适配器(Adaptor)

光天化日于同寒蛋糕店当学徒,晚上报了培训班考了导游证,每年节假日还见面在邻里那边带旅游团,因为里在云南,所以每年节假日其还特别忙,经常是牵动了一个团还来不及休息又跟着带任何

·    
   空间配制器(allocator)其中重点办事包括个别有1.对象的缔造和销毁   
2.内存的得到与自由

与此同时每周还求一天假去学画画,她说开蛋糕就是相同山头艺术,不懂点艺术怎么能做出良好的蛋糕。手机一律于是便是三四年,衣服呢是非常少打,她说那么辛苦之熬煎下来便为了攒钱开始平家蛋糕店。

以下重点讨论:容器,迭代器,算法,适配器。如需了解加了解
参见C++ Primer

其三年之岁月,她为此攒的钱盘下来了不大的同下门面店,虽然非常有点而且还是当人流量不坏的地方,可是它们说它们爱本的存,她的盼望是始连锁蛋糕店。她还戏谑说,我只要愿意,等自身大学毕业了第一手去其底连带蛋糕店当店长。

1.STL容器

暨它们讲过以后,我吓怀念死哭一庙。我为其感到骄傲,但再次多之是吧自己感到难受。我早已说了自家太可怜之想是从头平小蛋糕店,可是后来总看没钱并未技术没有经验,开平寒蛋糕店于自身来说简直是天方夜谭。

1)序列式容器(Sequence
containers),每个元素还有固定位置--取决于插入时和地点,和元素值无关,vector、deque、list;

于是大学三年来空余时间还让自己用来消耗在了电视剧跟世俗之团圆及,学校外的蛋糕店在招周末学徒,可是我当累不思量去,因为我要好觉得始于平寒蛋糕店最不现实。

    
 Vectors:将元素置于一个动态数组中加以管理,可以随机存取元素(用索引直接存取),数组尾部添加或移除元素非常快捷。但是于中间或头部安插元素比较困难;

他人给你实现了盼望之时节,你才最好为难了,因为你给期望狠狠的鼓了平等巴掌。

      Deques:是“double-ended
queue”的缩写,可以随机存取元素(用索引直接存取),数组头部及尾部添加或移除元素还很迅猛。但是在当中或头部安插元素比较棘手;

公不奋力,谁啊被莫了若想如果的活

    
 Lists:双向链表,不提供随机存取(按梯次走至需要存取的因素,O(n)),在另位置及推行插入或删除动作还死快捷,内部只有待调整一下指南针;

您想当作家,但是理性告诉你“作家是得自然的,还是别幻想了”,于是你放弃坚持了几上的写。

2)关联式容器(Associated
containers),元素位置在特定的排序准则,和插顺序无关,set、multiset、map、multimap;

汝想学弹钢琴,可是您望学习钢琴之且是小学生还是是幼儿园的学生,你道好之齿已经不合适了,于是连第一步都不曾迈出就跌落了回。

    
 Sets/Multisets:内部的要素依据其值自动排序,Set内之同样数值的元素只能出现同样蹩脚,Multisets内而含蓄多单数值相同之要素,内部由二叉树实现(实际上基于红黑树(RB-tree)实现),便于寻找;

您想去上海冲刺,可是见到魔都快节奏的生存及激昂的物价,于是你劝自己说上海就是单副旅行的地方。

    
 Maps/Multimaps:Map的要素是成对的键值/实值,内部的元素依据其值自动排序,Map内的一律数值的因素只能出现平不善,Multimaps内而含蓄多独数值相同的元素,内部由二叉树实现(实际上基于红黑树(RB-tree)实现),便于寻找;

不畏是以若太理性,给了友好无比多预设,担心好之年纪,担心自己之家园,担心好的行事与活,担心自己之适应能力,于是那些你想做的就是受您协调先否认了。

除此以外有其他容器hash_map,hash_set,hash_multiset,hash_multimap。

才二十几年份呀,不尝试怎么会掌握老啊?你预设好会失败所以不失去品尝,可是就是到底失败了也无所谓,我们还年轻,还经得起好勤受挫。你是纪念要温故知新起来的缺憾还是想念使努力后的无悔?

  容器的较:

咱只是偶然来到这个世界,终有同龙会与是世界告别,结局都注定,我们能够转移之仅仅过程。我愿意走遍这个世界,我望品尝每一样栽食品,我欲会来勇气尝试不同的生活方式,我想自己永远不见面活在预设之中。

   
Vector
Deque
List
Set
MultiSet
Map
MultiMap
内部结构
dynamic array
array of arrays
double linked  list
binary tree
binary tree
binary tree
binary tree
随机存取
Yes
Yes
No
No
No
Yes(key)
No
搜索速度
很慢
快速插入移除
尾部
首尾
任何位置

2.STL迭代器

Iterator(迭代器)模式还要如Cursor(游标)模式,用于提供相同栽方式顺序访问一个汇对象被相继要素,
而又休需暴露该目标的其中表示。或者这样说或者又便于掌握:Iterator模式是动于聚集对象的同一种植模式,通过行使该模式,使得我们可以以不明白对象中表示的状下,按照一定顺序(由iterator提供的方)访问聚合对象中的顺序要素。

迭代器的企图:能够让迭代器与算法不打搅的互发展,最后以能随便余的贴起来,重载了*,++,==,!=,=运算符。用以操作复杂的数据结构,容器提供迭代器,算法使用迭代器;

广泛的一些迭代器类型:iterator、const_iterator、reverse_iterator和const_reverse_iterator

迭代器一般宣称使用示例

vector<T>::iterator
it;list<T>::iterator
it;deque<T>::iterator it;

 

           input       
 output

             \          
 /  

               forward

                    |

             
 bidirectional

                    |

              randomaccess                   
                   

假如顾,上面这图表并无是标志其中的累关系:而仅仅是叙了迭代器的型及接口。处于图表下层之迭代器都是对立于处于图表上层迭代器的扩大集。例如:forward迭代器不但有着input和output迭代器的拥有功能,还具有再多的效应。

各个迭代器的效应如下:

  

迭代器类别

  

说明
输入
从容器中读取元素。输入迭代器只能一次读入一个元素向前移动,

  

输入迭代器只支持一遍算法,同一个输入迭代器不能两遍遍历一个序列
输出
向容器中写入元素。输出迭代器只能一次一个元素向前移动。

  

输出迭代器只支持一遍算法,统一输出迭代器不能两次遍历一个序列
正向
组合输入迭代器和输出迭代器的功能,并保留在容器中的位置
双向
组合正向迭代器和逆向迭代器的功能,支持多遍算法
随机访问
组合双向迭代器的功能与直接访问容器中任何元素的功能,

  

即可向前向后跳过任意个元素

迭代器的操作:

每种迭代器均只是进展包括表中前无异栽迭代器可开展的操作。

  

迭代器操作

  

说明

负有迭代器

p++

后置自增迭代器

++p

停放自增迭代器

输入迭代器

*p

重新引用迭代器,作为右值

p=p1

以一个迭代器赋给其它一个迭代器

p==p1

比迭代器的相等性

p!=p1

比迭代器的不等性

出口迭代器

*p

再也引用迭代器,作为左值

p=p1

以一个迭代器赋给其它一个迭代器

正好往迭代器

提供输入输出迭代器的保有功能

双向迭代器

–p

坐自减迭代器

p–

后置自减迭代器

轻易迭代器

p+=i

以迭代器递增i位

p-=i

用迭代器递减i位

p+i

以p位加i位后的迭代器

p-i

每当p位减i位后底迭代器

p

归来p位元素偏离i位的因素引用

p<p1

假定迭代器p的职在p1前,返回true,否则回false

p<=p1

p的职务在p1的眼前或雷同位置时回来true,否则回false

p>p1

比方迭代器p的职于p1后,返回true,否则回false

p>=p1

p的职务于p1的末端要同职位时返回true,否则回false

才来各个容器与事关容器支持迭代器遍历,各容器支持之迭代器的色如下:

  

容器

  

支持的迭代器类别
说明
vector
随机访问
一种随机访问的数组类型,提供了对数组元素进行快速随机访问以及在序列尾部进行快速的插入和删除操作的功能。可以再需要的时候修改其自身的大小
deque
随机访问
一种随机访问的数组类型,提供了序列两端快速进行插入和删除操作的功能。可以再需要的时候修改其自身的大小
list
双向
一种不支持随机访问的数组类型,插入和删除所花费的时间是固定的,与位置无关。
set
双向
一种随机存取的容器,其关键字和数据元素是同一个值。所有元素都必须具有惟一值。
multiset
双向
一种随机存取的容器,其关键字和数据元素是同一个值。可以包含重复的元素。
map
双向
一种包含成对数值的容器,一个值是实际数据值,另一个是用来寻找数据的关键字。一个特定的关键字只能与一个元素关联。
multimap
双向
一种包含成对数值的容器,一个值是实际数据值,另一个是用来寻找数据的关键字。一个关键字可以与多个数据元素关联。
stack
不支持
适配器容器类型,用vector,deque或list对象创建了一个先进后出容器
queue
不支持
适配器容器类型,用deque或list对象创建了一个先进先出容器
priority_queue
不支持
适配器容器类型,用vector或deque对象创建了一个排序队列

3.STL算法

STL算法有要由头文件<algorithm>,<numeric>,<functional>组成。要运用
STL中的算法函数必须带有头文件<algorithm>,对于数值算法须包含<numeric>,<functional>中尽管定义了有模板类,用来声称函数对象。
STL中算法大致分为四类:
1)、非可转移阵算法:指不直接改动其所操作的器皿内容之算法。
2)、可转换阵算法:指可改其所操作的器皿内容的算法。
3)、排序算法:包括针对班进行排序和归并之算法、搜索算法以及有序序列上的集聚操作。
4)、数值算法:对容器内容开展数值计算。

以下对具有算法进行精雕细刻分类并标明功能:
<一>查找算法(13独):判断容器中是否包含有只价值
    adjacent_find:
在iterator对标识元素范围外,查找一针对性附近重复元素,找到则赶回指为当时对准素的首先只要素的ForwardIterator。否则回last。重载版本用输入的老二状元操作符代替相等的判断。
    binary_search:
在平稳序列中摸索value,找到归true。重载的版本实用指定的较函数对象要函数指针来判定等。
    count:
利用等操作符,把标志范围外的因素以及输入值比较,返回相等元素个数。
    count_if:
利用输入的操作符,对标志范围外的因素进行操作,返回结果吧true的个数。
    equal_range:
功能相近equal,返回一针对iterator,第一单象征lower_bound,第二只代表upper_bound。
    find:
利用底层元素的抵操作符,对点名范围外之要素和输入值进行比较。当匹配时,结束搜索,返回该因素的一个InputIterator。
    find_end:
在指定范围外找”由输入的另外一针对iterator标志的第二单序列”的最终一浅出现。找到则归最后有的之率先个ForwardIterator,否则回输入的”另外一针对”的首先只ForwardIterator。重载版本用用户输入的操作符代替等于操作。
    find_first_of:
在指定范围外搜索”由输入的另外一对iterator标志的亚个班”中肆意一个素的率先蹩脚出现。重载版本被采用了用户从定义操作符。
    find_if: 使用输入的函数代替等于操作符执行find。
    lower_bound:
返回一个ForwardIterator,指向于稳步序列范围外的足插指定值如果休坏容器顺序的首先单职位。重载函数使用自定义比较操作。
    upper_bound:
返回一个ForwardIterator,指向于平稳序列范围外插入value而不损坏容器顺序的终极一个职,该职务标志一个压倒value的值。重载函数使用从定义比较操作。
    search:
给闹点儿个限,返回一个ForwardIterator,查找成功对第一只限外率先次等出现子序列(第二独限)的职务,查找未果指向last1。重载版本用于定义的比较操作。
    search_n:
在指定范围外搜寻val出现n次的子序列。重载版本用于定义之可比操作。

<二>排序和通用算法(14独):提供要素排序策略
    inplace_merge:
合并两单不变序列,结果序列覆盖两端范围。重载版本用输入的操作进行排序。
    merge:
合并两单不变序列,存放到任何一个序列。重载版本用由定义的比。
    nth_element:
将范围外的行重新排序,使有小于第n只要素的元素还冒出在它们面前,而凌驾它的还出现在后。重载版本采用自定义之较操作。
    partial_sort:
对队列做有排序,被排序元素个数正好可以叫放范围外。重载版本用自定义的较操作。
    partial_sort_copy:
与partial_sort类似,不过用透过排序的队复制到任何一个器皿。
    partition:
对指定范围外元素还排序,使用输入的函数,把结果吗true的因素放在结果吧false的要素之前。
    random_shuffle:
对指定范围外之素随机调整次序。重载版本输入一个随便数有操作。
    reverse: 将指定范围外元素还反序排序。
    reverse_copy: 与reverse类似,不过将结果写副另外一个容器。
    rotate:
将指定范围外元素移到容器末尾,由middle指向的要素变为容器第一只元素。
    rotate_copy: 与rotate类似,不过以结果写副另外一个器皿。
    sort:
以升序重新排列指定范围外的素。重载版本用于定义之于操作。
    stable_sort: 与sort类似,不过保留相当元素中的各个关系。
    stable_partition:
与partition类似,不过不保险保留容器中之对立顺序。

<三>删除和替换算法(15单)
    copy: 复制序列
    copy_backward: 与copy相同,不过元素是坐反顺序为拷贝。
    iter_swap: 交换两单ForwardIterator的值。
    remove:
删除指定范围外具备等于指定元素的因素。注意,该函数不是真正去函数。内置函数不适合下remove和remove_if函数。
    remove_copy:
将所有非般配配元素复制到一个制定容器,返回OutputIterator指向于拷贝的末元素的下一个职位。
    remove_if: 删除指定范围外输入操作结果吗true的享有因素。
    remove_copy_if: 将所有非配合配元素拷贝到一个指定容器。
    replace: 将指定范围外所有等于vold的要素还用vnew代替。
    replace_copy: 与replace类似,不过以结果写副另外一个器皿。
    replace_if: 将指定范围外装有操作结果为true的素用新值代替。
    replace_copy_if: 与replace_if,不过以结果写副另外一个器皿。
    swap: 交换存储在简单单目标被之价。
    swap_range: 将指定范围外之因素与另外一个行头素值进行置换。
    unique:
清除序列中再度元素,和remove类似,它呢不能够真正去元素。重载版本采用由定义比较操作。
    unique_copy: 与unique类似,不过将结果输出到另外一个器皿。

<四>排列组合算法(2单):提供计算给定集合按一定顺序的有所或排列组合
    next_permutation:
取出即限外的排,并重复排序也产一个排。重载版本采用由定义的比较操作。
    prev_permutation:
取出指定范围外之队列并将其还排序也上一个阵。如果未在上一个队列则赶回false。重载版本采用由定义之可比操作。

<五>算术算法(4只)
    accumulate:
iterator对标识的序列段元素之和,加到一个由于val指定的初始值上。重载版本不再做加法,而是传进来的亚首位操作符被以到元素上。
    partial_sum:
创建一个新序列,其中每个长素值代表指定范围外该职位前所有元素之和。重载版本采用从定义操作代替加法。
    inner_product:
对少数单班做内积(对应元素相乘,再请与)并拿内积加到一个输入的初始值上。重载版本用用户定义的操作。
    adjacent_difference:
创建一个初序列,新序列中每个新值代表时因素以及齐一个要素的不同。重载版本用指定二元操作计算相邻元素的不比。

<六>生成和异变算法(6只)
    fill: 将输入值赋给标志范围外之兼具因素。
    fill_n: 将输入值赋给first到first+n范围外的保有因素。
    for_each:
用指定函数依次对点名范围外所有因素进行迭代访问,返回所指定的函数类型。该函数不得改序列中的因素。
    generate: 连续调整用输入的函数来填充指定的限。
    generate_n: 与generate函数类似,填充从指定iterator开始之n个元素。
    transform:
将输入的操作作用与指定范围外的每个元素,并有一个初的行列。重载版本将操作作用在有的元素上,另外一个素来输入的另外一个队。结果输出到指定容器。

<七>关系算法(8独)
    equal:
如果个别只队在表明范围外元素都当,返回true。重载版本用输入的操作符代替默认的顶操作符。
    includes:
判断第一个指定范围外的所有因素是否还深受第二独限涵盖,使用底层元素的<操作符,成功返回true。重载版本采用用户输入的函数。
    lexicographical_compare:
比较单薄独序列。重载版本采用用户从定义比较操作。
    max: 返回两单要素被比较生一个。重载版本采用由定义比较操作。
    max_element:
返回一个ForwardIterator,指出行中最为深的因素。重载版本用自定义比较操作。
    min: 返回两只元素中比较小一个。重载版本采用由定义比较操作。
    min_element:
返回一个ForwardIterator,指出行中极小之要素。重载版本采用由定义比较操作。
    mismatch:
并行比较有限独序列,指出首先独无兼容的职位,返回一针对iterator,标志第一单不般配配元素位置。如果都相当,返回每个容器的last。重载版本采用由定义之可比操作。

<八>集合算法(4只)
    set_union:
构造一个稳步序列,包含两个序列中有所的非又元素。重载版本用自定义之比操作。
    set_intersection:
构造一个一如既往序列,其中元素于有限单队中还设有。重载版本用由定义的比较操作。
    set_difference:
构造一个一如既往序列,该队仅保留第一独队中留存的要第二个受到莫存在的因素。重载版本采用从定义之较操作。
    set_symmetric_difference:
构造一个一成不变序列,该序列取两个班的相辅相成差集(并集-交集)。

<九>堆算法(4个)
    make_heap:
把指定范围外之元素生成一个积。重载版本采用于定义比较操作。
    pop_heap:
并无审把极要命因素于堆积如山着弹奏来,而是更排序堆。它把first和last-1交换,然后又生成一个堆放。可利用容器的back来访问于”弹有”的素或使用pop_back进行真正的去。重载版本用自定义之可比操作。
    push_heap:
假设first到last-1是一个管用堆,要叫加入到堆的元素存放于岗位last-1,重新生成堆。在对该函数前,必须优先拿元素插入容器后。重载版本采用指定的较操作。
    sort_heap:
对指定范围外的行列重新排序,它假而该队是只静止堆。重载版本采用由定义比较操作。

4.适配器

STL提供了三单容器适配器:queue、priority_queue、stack。这些适配器都是包装了vector、list、deque中某个顺序容器的包装器。注意:适配器没有供迭代器,也非克而插入或删除多独元素。下面对各个适配器进行包括总结。
(1)stack用法

#include
<stack>template < typename T, typename Container=deque
> class stack;

好行使三只专业顺序容器vecotr、deque(默认)、list中的任何一个用作stack的平底模型。

bool stack<T>::empty()                      
   //判断堆栈是否为空void stack<T>::pop()                         
  //弹出栈顶数据stack<T>::push(T x)                         
   //压入一个数目stack<T>::size_type stack<T>::size() 
          //返回堆栈长度T
stack<T>::top()                               //得到栈顶数据

代码示例:

stack<int>
intDequeStack;  stack<int,vector<int>>
intVectorStack;  stack<int,list<int>>
intListStack;

(2)queue用法

#include
<queue>template<typename T, typename Container =
deque<T> > class  queue;

首先单参数指定要在queue中贮存的路,第二只参数规定queue适配的脚容器,可供应选择的容器只有dequeue和list。对多数用处使用默认的dequeue。

queue<T>::push(T
x)void queue<T>::pop()T
queue<T>::back()T
queue<T>::front()queue<T>::size_type queue<T>::size()bool queue<T>::empty()

代码示例:

queue<int>
intDequeQueue;    queue<int,list<int>>
intListQueue;

(3)priority_queue用法

#include
<queue>template <typename T, typename Container =
vector<T>, typename Compare = less<T> > class priority_queue;

priority_queue为是一个行列,其元素以有序顺序排列。其非使严格的FIFO顺序,给定时刻位于队头的素正是有最高优先级的因素。如果少单要素来同一之优先级,那么她当班中的各个就遵循FIFO语义。默认适配的平底容器是vector,也堪运用deque,list不克因此,因为priority_queue要求能够针对素随机访问以便进行排序。

priority_queue<T>::push(T
x)void priority_queue<T>::pop()T
priority_queue<T>::top()priority_queue<T>::size_type priority_queue<T>::size()boolpriority_queue<T>::empty()

代码示例:

priority_queue< int,
vector<int>, greater<int>
>priority_queue< int,
list<int>, greater<int>
>

标准库默认使用要素类型的<操作符来确定她中间的先行级关系,用法有三:(下文转自http://www.cnblogs.com/vvilp/articles/1504436.html)

预先队列第一种植用法,通过默认使用的<操作符可知在整数中元素大的先级赛。

priority_queue<int>
qi;

以身作则中输出结果吗:96 5 3
2

优先队列第二种植用法,建立priority_queue时传入一个于函数,使用functional.h函数对象作为比函数。

priority_queue<int,
vector<int>, greater<int>
>qi2;

示范2负输出结果吧:2 3 5 6
9

优先队列第三栽用法,是起定义优先级。

struct node { 
   friend bool operator< (node
n1, node n2) 
   {         return n1.priority
< n2.priority;     }  
   int priority; 
   int value; }; priority_queue<node>
qn;

以演示3遇输出结果吧:

优先级 值

9         5

8         2

6         1

2         3

1         4

于该组织中,value为值,priority为先行级。通过自定义operator<操作符来比元素被的先期级。注意:必须是起定义<操作符才行,把上述的结构面临的<操作符改化>编译不通过。