还没有接触C++的时候,我做的一些算法题如果包含有排序的问题,我一般都是用选择排序法或者冒泡排序法来解决,但是学习了C++后,我知道了还有STL也就是C++的标准模板库里面的函数我是可以直接使用的。想要了解STL需要先明白C++的模板是什么含义。
#include
using namespace std;
#include
int main(){
int a[100];
int n;
cin>>n;
for(int i = 0 ; i < n ; i++){
cin>>a[i];
}
sort(a,a+n);//从小到大排序
for(int i = 0 ; i < n ; i++){
cout<
<<" ";
}
return 0;
}
这段代码,我就是简单的使用了sort函数实现了对整型数组的排序。
另外,sort可以对任意对象进行排序,不一定是内置类型,如果希望用sort排序,这个类型需要定义“小于”运算符,或者在排序时传入一个“小于”函数。排序对象可以存在于普通数组里,也可以存在容器中,如vector中。前者使用的是sort(a,a+n),后者使用sort(v.begin(),v.end())。 要注意的是 sort是一个模板函数。
要对自定义对象进行排序,要重载‘<’ 运算符,比如
#include<iostream>
using namespace std;
class A{
private:
int x;
int y;
public:
A(int x,int y){
this->x = x ;
this->y = y ;
}
bool operator < (const A& b){
return this->x<b.x? true:false;
}
};
int main(){
A test_1(1,3),test_2(2,4),test_3(3,2);
if(test_1<test_2) cout<<"test_1小于test_2";
}
我写了一个类A ,重载了<运算符,比较对象中x的值大小,并返回bool类型。main函数中我写了测试语句。
所以那么,在这里就可以使用sort函数了。
int main(){
A p[5];
int n ;
sort(p,p+n);
return 0 ;
}