c++自定義比較函式
庫函式比較函式(命名空間std)
void qsort ( void * base, size_t num, size_t size, int ( * comparator ) ( const void *, const void * ) );
#include
其中const void * a
表示宣告了乙個常量指標 a,(int*)a
指的是將常數指標 a強制轉化為整型指標 a,那麼再與前面加乙個*
就表示取這個指標所指向位置的元素了。
#include#includeusing namespace std;
int a = ;
int compare(const void* a, const void* b);
int main()
return 0;
}int compare(const void* a, const void* b)//公升序
輸出:1 2 3 4
#include#includeusing namespace std;
char a[4] = , , };
int compare(const void* a, const void* b);
int main()
return 0;
}int compare(const void* a, const void* b)//公升序
輸出:abc bca cab
一般對陣列排序時,這個簡單,因為第三個引數"compare"函式可預設,預設為公升序排列。
#include
#include#includeusing namespace std;
int value = ;
bool compare(int a, int b);
int main()
return 0;
}
輸出:1 2 3 4 5
部分陣列排序
你還可以這麼玩:
#include#includeusing namespace std;
int value = ;
bool compare(int a, int b);
int main()
return 0;
}
輸出:5 1 2 3 4
#include#includeusing namespace std;
int value = ;
bool compare(int a, int b);
int main()
return 0;
}bool compare(int a, int b) //降序
輸出:5 4 3 2 1
降序排列
less《資料型別》()
greater《資料型別》()
字元型:
#include#includeusing namespace std;
char value = ;
int main()
return 0;
}
輸出:e d c b a
對結構體排序-自定義比較函式
#include#includeusing namespace std;
struct student
value[3];
bool compare(const student& a, const student& b);
int main()
; value[1] = ;
value[2] = ;
sort(value, value + 3, compare);
for ( i = 0; i < 3; i++)
return 0;
}bool compare(const student& a, const student& b)
else
}
輸出:
kite 10
mike 20
tom 15
對結構體排序-過載關係運算子
#include#includeusing namespace std;
struct student
else
}//簡單地說,和之前的 compare 函式相比,就是把當前「物件」看作 a 了
}value[3];
int main()
; value[1] = ;
value[2] = ;
sort(value, value + 3);
for ( i = 0; i < 3; i++)
return 0;
}
輸出:
kite 10
mike 20
tom 15
C C 數學庫函式
所在函式庫為math.h stdlib.h string.h float.h 1.絕對值 int abs int i 返回整型引數i的絕對值 double cabs struct complex znum 返回複數znum的絕對值 double fabs double x 返回雙精度引數x的絕對值 ...
使用VC庫函式中的快速排序函式
函式原型 void qsort void base,size t num,size t width,int cdecl compare const void const void 第乙個是陣列位址,第二是陣列大小,第三個是陣列中每個元素的位元組數,最後乙個是個函式指標,表示如何比較陣列中的元素。標頭...
使用VC庫函式中的快速排序函式
下面講下vc中庫函式qsort 的用法 函式原型 void qsort void base,size t num,size t width,int cdecl compare const void const void 第乙個是陣列位址,第二是陣列大小,第三個是陣列中每個元素的位元組數,最後乙個是個...