C++ sort()函数 | 您所在的位置:网站首页 › csort函数 › C++ sort()函数 |
sort()函数 sort()函数是定义在C++ STL 标准库中的一个模板函数 ,它的作业是对容器或普通数组中指定范围内的元素进行排序,排序规则默认以元素值的大小做升序排序,除此之外我们也可以选择标准库提供的其它排序规则(比如std::greater降序排序规则)。最重要的是我们可以使用函数的形式自定义排序规则,调用时只需要把我们自定义的排序函数作为参数传入即可。 要使用sort(),我们需要包含头文件。 #includesort()本身的实现是基于快速排序,但并不是单纯的快速排序。比如给一个数据量较大的数组排序,开始采用快速排序,分段递归,分段之后每一段的数据量达到一个较小值后它就不继续往下递归,而是选择插入排序,如果递归的太深,他会选择推排序。具体实现源码看着头疼,就不管了,总之性能还是很好的。 需要注意的是,sort()函数要求参数容器的迭代器类型为RandomAccessIterator,即随机访问迭代器。这就意味着sort()函数目前只对数组 (array)、向量(vector)、双队列生效(deque)。 另外,若容器内含有多个相同值的元素,使用sort()排序时,可能会导致它们相对位置发生改变。 sort()函数有三个参数: void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);参数1:迭代器的起始位置,对于数组来说就是数组的首地址,一般写上数组名就可以,因为数组名是一个指针常量。 参数2:迭代器的结束位置,即首地址加上数组的长度n(代表尾地址的下一地址)。 参数3:排序规则。默认可以不填,如果不填sort会默认按数组升序排序。也就是1,2,3,4。comp 可以是 C++ STL 标准库提供的排序规则(比如 std::greater),也可以是STL关联式容器自定义排序规则,还可以直接定义一个具有 2 个参数并返回 bool 类型值的函数作为排序规则。 对于自定义函数的方法,当函数返回true的时候,关系表达式的左数将会排在数组靠前的位置。例如: int A[100]; bool cmp1(int a,int b){ //降序排列 //return a>b; //默认的升序排列 return a>ath[i].country; } //调用sort()函数简化排序过程 sort(ath,ath+n,cmp); //输出,注意序号中0的个数,使用右对齐补0的方式 for(int i = 0;i |
CopyRight 2018-2019 实验室设备网 版权所有 |