ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++ sort函数

2022-01-16 21:33:00  阅读:156  来源: 互联网

标签:sort std begin myvector 函数 C++ 12 排序


sort函数

1.sort函数包含在头文件为#include<algorithm>的c++标准库中,调用标准库里的排序方法可以实现对数据的排序。

2.sort函数的模板:

void sort (RandomAccessIterator first, RandomAccessIterator last);
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);

(1)第一个参数first:是要排序的数组的起始地址。

(2)第二个参数last:是结束的地址(最后一个数据的后一个数据的地址)

(3)第三个参数comp是排序的方法:可以是从升序也可是降序,例如:greater<int>() 递减, less<int>() 递增。如果第三个参数不写,则默认的排序方法是从小到大排序。

 

sort() 函数是基于快速排序实现的,无法保证排序后它们的相对位置不发生改变。

 

#include <iostream>     // std::cout #include <algorithm>    // std::sort #include <vector>       // std::vector //以普通函数的方式实现自定义排序规则 bool mycomp(const int &i, const int &j) {     return (i < j); } //以函数对象的方式实现自定义排序规则 class mycomp2 { public:     bool operator() (int i, int j) {         return (i < j);     } };
int main() {     std::vector<int> myvector{ 32, 71, 12, 45, 26, 80, 53, 33 };     //调用第一种语法格式,对 32、71、12、45 进行排序     std::sort(myvector.begin(), myvector.begin() + 4); //(12 32 45 71) 26 80 53 33     //调用第二种语法格式,利用STL标准库提供的其它比较规则(比如 greater<T>)进行排序     std::sort(myvector.begin(), myvector.begin() + 4, std::greater<int>()); //(71 45 32 12) 26 80 53 33    //调用第二种语法格式,通过自定义比较规则进行排序     std::sort(myvector.begin(), myvector.end(), mycomp());//12 26 32 33 45 53 71 80     //调用第二种语法格式,通过自定义比较规则进行排序     std::sort(myvector.begin(), myvector.end(), mycomp2());//12 26 32 33 45 53 71 80     //输出 myvector 容器中的元素     for (std::vector<int>::iterator it = myvector.begin(); it != myvector.end(); ++it) {         std::cout << *it << ' ';     }     return 0; }    

参考博客:http://c.biancheng.net/view/7457.html

标签:sort,std,begin,myvector,函数,C++,12,排序
来源: https://www.cnblogs.com/home123/p/15811343.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有