stl 中sort的使用
sort的三个参数(起始位置,末尾位置+1,升序/降序)
升序第三个参数可省略。
非升序greater < int >()
非降序less< int >()
例如:
vector版
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int a;
vector<int> v1;
int main()
{
cout<<"输入:";
for(int i=0;i<5;i++)
{
cin>>a;
v1.push_back(a);
}
cout<<"原始: ";
for(int i=0;i<5;i++)
cout<<v1[i]<<" ";
cout<<endl;
sort(v1.begin() ,v1.end());
cout<<"排序后: ";
for(int i=0;i<5;i++)
cout<<v1[i]<<" ";
cout<<endl;
return 0;
}
输出结果:
数组版
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int a[5];
int main()
{
cout<<"输入:";
for(int i=0;i<5;i++)
{
cin>>a[i];
}
cout<<"原始: ";
for(int i=0;i<5;i++)
cout<<a[i]<<" ";
cout<<endl;
sort(a,a+5);
cout<<"排序后: ";
for(int i=0;i<5;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
输出结果:
自定义规则:这里先按照第一个数排序,如果第一个数相同,就以第二个数大小排序
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct node{
int data1;
int data2;
};
vector<node> v;
node a;
bool cmp(node a,node b)
{
if(a.data1==b.data1)
return a.data2>b.data2;
return a.data1>b.data1;
}
int main()
{
for(int i=0;i<5;i++)
{
cin>>a.data1>>a.data2;
v.push_back(a);
}
sort(v.begin() ,v.end() ,cmp);
for(int i=0;i<5;i++)
cout<<v[i].data1<<" "<<v[i].data2<<endl;
return 0;
}
输出结果:
以上就是sort部分的学习成果啦!学习内容出自@Alan_Lowe,优秀的博主哦!