C++sort函数使用总结
頭文件:algorithm
對于(整數/字符)數組進行比較時,可直接通過sort(a,a+n)或sort(a.begin(),a.end())進行排序,默認升序排列,須要高速實現降序時,有三種方案
1.反轉升序數組(reserve函數)
2.反向迭代sort(a.rend(),a.rbegin())
3.借助C++庫函數,greater<類型>()降序 ? ? ? less<類型>()升序 ? ? 頭文件:functional
當對結構體進行排序時,須要自己寫比較函數,曾了解qsort的都知道,C中的qsort排序函數寫起來比較麻煩,由于傳入的類型是const void * ,函數內部還須要進行強制轉換,而sort僅僅需正常傳入數據進行比較就可以。
eg:
#include<iostream> #include<cstdlib> #include<ctime> #include<algorithm> #include<functional> #include<string> using namespace std;typedef struct node{int x,y,z; }node; node s[10];\ int cmp(node a,node b) { if(a.x!=b.x)return a.x<b.x; else if(a.y!=b.y)return a.y<b.y; else return a.z<b.z; } int main() {srand((unsigned)time(NULL));for(int i=0;i<10;i++){s[i].x=rand()%5;s[i].y=rand()%10;s[i].z=rand()%20;}for(i=0;i<10;i++){cout<<s[i].x<<" "<<s[i].y<<" "<<s[i].z<<"\n";}sort(s,s+10,cmp);cout<<"\n\n";for(i=0;i<10;i++){cout<<s[i].x<<" "<<s[i].y<<" "<<s[i].z<<"\n";}return 0; }這里進行了結構體的多級排序。
當對字符串數組進行排序時,能夠利用C中的strcmp返回自己定義函數結果。
對于String,其能夠如同數組一樣使用,但不能利用C字符串函數,可使用C++標準庫字符串函數。
除了,結構體,字符串數組,sort函數都能夠利用C++標準函數實現高速排序,包含pair,vector等類型,未來掌握的更加完好了再繼續本文總結。
補:
當我們從0到n-1向數組中輸入數據時,排序時sort(a,a+n),當我們須要對當中的部分排序時,僅僅須要sort(a+x,a+n),x>=0(0時是全排序)排序后的結果將以a+x為起點存入。
當我們從1到n向數組中輸入數據時,排序時sort(a+1,a+n+1),當我們須要對當中的部分排序時,僅僅須要sort(a+x,a+n+1),x>=1,排序后的結果將以a+x為起點存入。
總結
以上是生活随笔為你收集整理的C++sort函数使用总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: POJ 1252 Euro Effici
- 下一篇: RPM包实现LAMP