stl中sort函数详解
1. sort 函数的形式:
②采用函数指针的形式,这里第三个参数只需要写出自己在外边定义的函数名称即可。
③采用比较器(函数运算符)的形式,事实上c++提供的这种函数运算符从某种意义上来讲就是取代c语言中中的函数指针。而且比它更灵活,因为自己可以定义自己所需要的规则。
sort(first_pointer,first_pointer+n,cmp)
函数的第一个参数是数组的首地址,一般写上数组名就可以,因为数组名是一个指针常量。第二个参数相对较好理解,即首地址加上数组的长度n。最后一个参数是比较函数的名称(一般比较函数名字都用cmp,当然这个名字是什么都所谓),这个比较函数可以不写,即第三个参数可以缺省。此时sort默认按数组升序排序。
2. 应用举例
#include<iostream> #include<vector> #include<algorithm> using namespace std; template<typename iterator> void print(iterator begin,iterator end) { while(begin!=end) cout << *begin++ << " "; cout << endl; } bool cmpInt(const int &a,const int &b) { return a<b; } class CmpInt { public: CmpInt(bool result=true):m_result(result){} bool operator()(const int &a,const int &b)const { return m_result?(a>b):(a<b); } private: bool m_result; }; int main() { int a[5]= {50,10,20,30,60}; vector<int>vi (a,&a[5]);//用数组来初始化vector print(vi.begin(),vi.end()); // sort(vi.begin(),vi.end());//① // sort(vi.begin(),vi.end(),cmpInt); //② sort(vi.begin(),vi.end(),CmpInt(false));//③ print(vi.begin(),vi.end()); return 0; }
解析:
①用的是两个参数的sort版本②采用函数指针的形式,这里第三个参数只需要写出自己在外边定义的函数名称即可。
③采用比较器(函数运算符)的形式,事实上c++提供的这种函数运算符从某种意义上来讲就是取代c语言中中的函数指针。而且比它更灵活,因为自己可以定义自己所需要的规则。
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了