随着练习代码练习题数的增加,我意识到自己和在系统中学习C的人之间还有很大的差距。 今天学习了sort函数。 这是可以在STL中直接调用的排序关系函数。 以下是我从别的博客里拿出来的,自己使用方便快捷的部分。
使用#include algorithm可以使用sort函数。 语法如下:
sort(begin,end )表示范围。 示例:
int_tmain(intargc,_TCHAR* argv[] () ) ) ) ) ) ) ) ) )。
{
inta [ 20 ]={ 2,4,1,23,5,76,0,43,24,65 },I;
for(I=0; i20; I )
couta[i]endl;
sort(a,a 20 );
for(I=0; i20; I )
couta[i]endl;
返回0;
}
输出结果按升序对数组a进行排序。
2 .可以向2.sort中添加参数,按升序降序排列。
1 )自己创建compare函数:
Ool比较(int b,int b ) )。
{
返回AB; //按升序排列,换成返回ab则按降序排列
}
2 )接下来调用三个参数的sort:sort(begin、end、compare )。 在list容器的情况下,也可以应用该方法,将compare作为sort的参数即可。 即,sort (比较)。
int_tmain(intargc,_TCHAR* argv[] () ) ) ) ) ) ) ) ) )。
{
inta [ 20 ]={ 2,4,1,23,5,76,0,43,24,65 },I;
for(I=0; i20; I )
couta[i]endl;
sort(a,a 20,比较);
for(I=0; i20; I )
couta[i]endl;
返回0;
}
3 .标准库已经有现成的。 进入功能区,include进入就行了。 functional提供了许多基于模板的比较函数对象。 它们是(看名字就知道它的意思) equal_toType、not_equal_toType、greaterType、greater_equalType、lessType、less_equalType 对于这个问题,greater和less就足够了。 就这样拿来用。 升序: sort(begin,end,lessdata-type ) )降序: sort(begin,end,greaterdata-type ).int_tmain(intargc,
{
inta [ 20 ]={ 2,4,1,23,5,76,0,43,24,65 },I;
for(I=0; i20; I )
couta[i]endl;
sort(a,a 20,greaterint ) );
for(I=0; i20; I )
couta[i]endl;
返回0;
}
以上三种方式对我现在的水平来说已经足够了,今后我会更加深入地学习。