- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十章 排序及相关操作 ;主要函数如下所示。;6;10.1 排序;③partial_sort
原型:templateclass RanIt
void partial_sort(RanIt first, RanIt middle, RanIt last);
templateclass RanIt, class Pred
void partial_sort(RanIt first, RanIt middle, RanIt last, Pred pr);
该函数实现了局部元素排序功能。对[first, last)间的元素排序结束后,仅前middle-first-1个元素是必须按要求排好序的,其它元素不一定是排好序的。即:对任意N[0,middle-first],M(N,last-first),都有*(first+N)*(first+M)。第二个函数与第一个函数相比定义了比较函数pr(x,y)代替了operator, 功能是相似的。
④partial_sort_copy
原型:templateclass InIt, class RanIt
RanIt partial_sort_copy(InIt first1, InIt last1,RanIt first2, RanIt last2);
templateclass InIt, class RanIt, class Pred
RanIt partial_sort_copy(InIt first1, InIt last1,RanIt first2, RanIt last2, Pred pr);
该函数功能是: 与partial_sort相比有两点主要不同:(1)排序结果可以输出到另外一个容器(当然也可自身容器);(2)partial_sort函数中直接给出了middle值,而该函数middle值是计算出来的。middle=min(last1-first1,last2-first2)+first1。之后:对任意N[0,middle-first1],M(N,last1-first1),都有*(first2+N)*(first1+M)。第二个函数与第一个函数相比定义了比较函数pr(x,y)代替了operator, 功能是相似的。;10.1.2 示例分析;【例10.2】对学生成绩进行升序排列;【例10.3】利用partial_sort取整形向量最小的4个元素。;【例10.4】求成绩最好的3位同学。;【例10.5】list容器排序问题。;注释行的程序是错误的,说明list容器不能用sort通用排序算法。这是由于sort需要的是随机迭代器,方便排序算法中的数据交换,而list提供的仅是双向迭代器。因此要想排序,只能用list类本身提供的sort函数,它有两种形式,已经在第6章6.3节list容器中简单讲过。如果要想让示例中元素降幂排列,如下调用就可以了:l.sort(greaterint())。当然也可以定义自定义二元函数。;10.2 第n个元素;10.2.2 示例分析
【例10.6】求第3个成绩最好的学生;10.3 二分检索;③equal_range
原型: templateclass FwdIt, class T
pairFwdIt, FwdIt equal_range(FwdIt first, FwdIt last,const T val);
templateclass FwdIt, class T, class Pred
pairFwdIt, FwdIt equal_range(FwdIt first, FwdIt last,const T val, Pred pr);
第1个模板函数功能是:在有序元素容器中,找出一对迭代指针midstart, midend,其间的元素都等于val。即:*(midstart+N)=val。如果有结果,结果保存在pair对象中,相当于pair(lower(first, last, val), upper(first,last,val))。
第2个模板函数与第1个模板函数功能相近:找出一对迭代指针midstart, midend,其间元素:pr(*(midstart+N), val)都是true。
④binary_search
原型:templateclass FwdIt, class T
bool binary_search(FwdIt first, FwdIt last, const T val);
templateclass FwdIt, class T, class Pred
bool bi
文档评论(0)