Perhaps more to the point on sort vs qsort, the two can be called essentially identically except that sort doesn't require the comparator arguments to be void*, and is thus more type-safe:
Code:#include <algorithm> FooBar array[100]; //... bool compareLess(const FooBar &a, const FooBar &b) { // or whatever return a.val < b.val; } //... int main() { //... Assume that array has been populated //... std::sort(array, array + 100, compareLess); }Of course, std::sort does not require a comparator to be specified if the particular type has operator< defined anyway.Code:#include <stdlib.h> int array[100]; //... int compare (const void * a, const void * b) { FooBar *aF = (FooBar*)a; FooBar *bF = (FooBar*)b; if (aF.val < bF.val) return -1; if (aF.val > bF.val) return 1; return 0; } int main () { //... Assume that array has been populated //... qsort (array, 100, sizeof(FooBar), compare); }




Reply With Quote
