我是C++初學者。我想了解function
如何在string
上進行排序?C++:排序函數
int SA_cmp(const void *a, const void *b) { return strcmp(S + *(int*)a, S + *(int*)b); }
任何指針都會幫助嗎?
我是C++初學者。我想了解function
如何在string
上進行排序?C++:排序函數
int SA_cmp(const void *a, const void *b) { return strcmp(S + *(int*)a, S + *(int*)b); }
任何指針都會幫助嗎?
這是一個C比較函數,而不是(C++)排序函數。一個排序函數(可能是qsort,給定const void*
參數)將會多次調用它(將指針傳遞給包含許多以空字符結尾的字符串的緩衝區的指針),以便對這些索引進行排序(並間接,它們表示的子串)。
這將不是排序字符串。
這是一種方法,可以幫助比較字符串,並將其作爲輔助方法使用。
它將返回一個負數如果串a
按字典順序不是字符串b
,0時,如果它們相等,或者如果b
正數大於a
更大。
感謝您的編輯。最初的答案讓我感到困惑,並把我扔進深深的自我懷疑的深淵:D – derM
建議的一句話:放棄上面的內容並使用[std :: string](http://en.cppreference.com/w/cpp/string/basic_string)和[std :: sort](http: //en.cppreference.com/w/cpp/algorithm/sort)。 – Ron
什麼是'S'?無論您使用的是什麼學習材料:現在扔掉。獲取[書](https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)。這是可怕的代碼,不應該顯示給初學者。 – nwp