具体讲解STL排序(Sort)[VC/C++编程]
本文“具体讲解STL排序(Sort)[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
0 前言: STL,为什么你必须掌握
关于程序员来说,数据构造是必修的一门课.从查找到排序,从链表到二叉树,几近全部的算法和原理都需求理解,理解不了也要死记硬背下来.幸运的是这些理论都已经对比成熟,算法也基本固定下来,不需求你再去花操心机去考虑其算法原理,也不用再去考证其精确性.不过,等你开始利用计算机语言来工作的时刻,你会发现,面对差别的需求你需求一次又一次去用代码反复实现这些已经成熟的算法,并且会一次又一次陷入一些由于自己忽视而产生的bug中.这时,你想找一种工具,已经帮你实现这些功效,你想怎么用就怎么用,同时不影响性能.你需求的就是STL, 尺度模板库!
西方有句谚语:不要反复创造轮子!
STL几近封装了全部的数据构造中的算法,从链表到行列,从向量到仓库,对hash到二叉树,从搜索到排序,从增添到删除......可以说,假如你理解了STL,你会发现你已不用拘泥于算法本身,从而站在伟人的肩膀上去考虑更高级的利用.
排序是最遍及的算法之一,本文具体介绍了STL中差别排序算法的用法和辨别.
1 STL供应的Sort 算法
C++之所以得到这么多人的喜好,是因为它既具有面向对象的概念,又保持了C语言高效的特点.STL 排序算法一样需求保持高效.因此,关于差别的需求,STL供应的差别的函数,差别的函数,实现的算法又不尽相同.
1.1 全部sort算法介绍
全部的sort算法的参数都需求输入一个范围,[begin, end).这里利用的迭代器(iterator)都需是随机迭代器(RadomAccessIterator), 也就是说可以随机拜候的迭代器,如:it+n什么的.(partition 和stable_partition 除外)
假如你需求自己定义对比函数,你可以把你定义好的仿函数(functor)作为参数传入.每种算法都支持传入对比函数.以下是全部STL sort算法函数的名字列表:
函数名 | 功效描写 |
sort | 对给定区间全部元素举行排序 |
stable_sort | 对给定区间全部元素举行安定排序 |
partial_sort | 对给定区间全部元素部份排序 |
partial_sort_copy | 对给定区间复制并排序 |
nth_element | 找出给定区间的某个位置对应的元素 |
is_sorted | 判断一个区间能否已经排好序 |
partition | 使得符合某个条件的元素放在前面 |
stable_partition | 相对安定的使得符合某个条件的元素放在前面 |
此中nth_element 是最不易理解的,实际上,这个函数是用来找出第几个.比方:找出包含7个元素的数组中排在中间那个数的值,此时,我大概不关心前面,也不关心背面,我只关心排在第四位的元素值是多少.
以上是“具体讲解STL排序(Sort)[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |