sort()函数使用详解
Posted zhudingtop
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sort()函数使用详解相关的知识,希望对你有一定的参考价值。
使用时需要导入头文件<algorithm>
#include<algorithm>
语法描述:sort(begin,end,cmp),cmp参数可以没有,如果没有默认非降序排序。
一.以int为例的基本数据类型的sort使用
#include<iostream> #include<algorithm> #include<cstring> using namespace std; int main() int a[5]=1,3,4,2,5; sort(a,a+5); for(int i=0;i<5;i++) cout<<a[i]<<‘ ‘; return 0;
因为没有cmp参数,默认为非降序排序,结果为:
1 2 3 4 5
若设计为非升序排序,则cmp函数的编写:
bool cmp(int a,int b)
return a>b;
其实对于这么简单的任务(类型支持“<”、“>”等比较运算符),完全没必要自己写一个类出来。标准库里已经有现成的了,就在functional里,include进来就行了。functional提供了一堆基于模板的比较函数对象。它们是(看名字就知道意思了):equal_to<Type>、not_equal_to<Type>、greater<Type>、greater_equal<Type>、less<Type>、less_equal<Type>。对于这个问题来说,greater和less就足够了,直接拿过来用:
升序:sort(begin,end,less<data-type>());
降序:sort(begin,end,greater<data-type>()).
int main ( ) int a[20]=2,4,1,23,5,76,0,43,24,65,i; for(i=0;i<20;i++) cout<<a[i]<<endl; sort(a,a+20,greater<int>()); for(i=0;i<20;i++) cout<<a[i]<<endl; return 0;
二.引用数据类型string的使用
一个字符串间的个字符排序:
使用迭代器可以完成顺序排序
#include<iostream> #include<algorithm> #include<cstring> using namespace std; int main() string str("hello world"); sort(str.begin(),str.end()); cout<<str; return 0;
结果:空格dehllloorw
使用反向迭代器可以完成逆序排序
#include<iostream> #include<algorithm> #include<cstring> using namespace std; int main() string str("hello world"); sort(str.rbegin(),str.rend()); cout<<str; return 0;
结果:wroolllhde空格
字符串间的比较排序
#include<iostream> #include<cstring > #include<algorithm> using namespace std; int main() string a[4]; for(int i=0;i<4;i++) getline(cin,a[i]); sort(a,a+4); for(int i=0;i<4;i++) cout<<a[i]<<endl; return 0;
三.以结构体为例的二级排序
#include<iostream> #include<algorithm> #include<cstring> using namespace std; struct link int a,b; ; bool cmp(link x,link y) if(x.a==y.a) return x.b>y.b; return x.a>y.a; int main() link x[4]; for(int i=0;i<4;i++) cin>>x[i].a>>x[i].b; sort(x,x+4,cmp); for(int i=0;i<4;i++) cout<<x[i].a<<‘ ‘<<x[i].b<<endl; return 0;
以上是关于sort()函数使用详解的主要内容,如果未能解决你的问题,请参考以下文章