2017-09-15 62 views
-2

我是C++初學者。我想了解function如何在string上進行排序?C++:排序函數

int SA_cmp(const void *a, const void *b) { return strcmp(S + *(int*)a, S + *(int*)b); } 

任何指針都會幫助嗎?

+5

建議的一句話:放棄上面的內容並使用[std :: string](http://en.cppreference.com/w/cpp/string/basic_string)和[std :: sort](http: //en.cppreference.com/w/cpp/algorithm/sort)。 – Ron

+3

什麼是'S'?無論您使用的是什麼學習材料:現在扔掉。獲取[書](https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)。這是可怕的代碼,不應該顯示給初學者。 – nwp

回答

2

這是一個C比較函數,而不是(C++)排序函數。一個排序函數(可能是qsort,給定const void*參數)將會多次調用它(將指針傳遞給包含許多以空字符結尾的字符串的緩衝區的指針),以便對這些索引進行排序(並間接,它們表示的子串)。

1

這將不是排序字符串。

這是一種方法,可以幫助比較字符串,並將其作爲輔助方法使用。

它將返回一個負數如果串a按字典順序不是字符串b,0時,如果它們相等,或者如果b正數大於a更大。

+1

感謝您的編輯。最初的答案讓我感到困惑,並把我扔進深深的自我懷疑的深淵:D – derM