看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux 問題(Question): 大家都知道 algorithm 裡面有個 sort 函數 可以自訂 compare function 來定義 sort 時要依據什麼規則排列 看了一下網站的範例 http://www.cplusplus.com/reference/algorithm/sort/ 這個 function 好像必須像這種樣子 bool functionName(T a, T b); //T 為某種 type 現在我想要在某個 class 內的某個 member function 內 將某個陣列 X 排序 (也是此 class 的 data member) 排序的定義是依照另一個 data member Y 的資料 我的想法是 若將這個 Compare function 寫成這個 class 的 member function 就可以 access 到 Y 問題是這個 compare function 應該怎麼寫呢 呼叫 sort 的時候 第三個 argument 又應該怎麼寫呢 預期的正確結果(Expected Output): 正確 sort 錯誤結果(Wrong Output): 對 「sort(int*&, int*, <unresolved overloaded function type>)」 的呼叫沒有匹配 的函式 程式碼(Code):(請善用置底文網頁, 記得排版) 前情提要: gainListSorted 是一個二維陣列 大小是 size * size 所以 gainListSorted[i] 是一個一維陣列 現在想要針對這 size 個 一維陣列分別 sort sort 的基準是 Gij 這個二維陣列 tempCompareStandard 是 SA class 的 data member -------------------------------------------------- void SA::SomeFunction() { ... for(int i=0;i<size;i++){ for(int j=0;j<size;j++) gainListSorted[i][j] = j; tempCompareStandard = i; sort(gainListSorted[i], gainListSorted[i]+size, SA::Function_CompareGain); } } bool SA::Function_CompareGain(int i, int j) { return Gij[tempCompareStandard][i] > Gij[tempCompareStandard][j]; } 請問紅字怎麼改呢 或是有其他地方需要改 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.233.240
firejox:順序... 10/24 22:41
firejox:不過既然包成class了 就去overload operator 會比較簡單.. 10/24 22:45
jackwei:請問您是說哪個順序? 所有的 function 都有寫 prototype 10/24 22:45
legnaleurc:這個狀況其實沒必要弄成 member function 10/25 01:37
legnaleurc:因為你要 sort 的型別只是個 int, 你其實可以只傳個 10/25 01:37
legnaleurc:greater: http://0rz.tw/qkaYM 10/25 01:38
legnaleurc:回到你的 code, member function pointer 前面要加 & 10/25 01:39
legnaleurc:然後這個 function 也要是 static, 否則你就要 bind 10/25 01:39
legnaleurc:一個 instance 給它 10/25 01:39
jackwei:感謝樓上回應...不過用greater 還可以根據 SA class 10/25 01:57
jackwei:裡面的其他data member 資料來排序嗎 他好像只是單純用 > 10/25 01:57
loveme00835:tempCompareStandard 這個只用在要排序的一維陣列的選 10/25 01:59
loveme00835:則嗎? 10/25 01:59
loveme00835:^擇 ^權重 10/25 02:01
jackwei:是的 為了讓 Function_CompareGain 知道現在要根據 10/25 02:07
jackwei:Gij 中的哪筆資料來判斷大小 10/25 02:07
loveme00835:不過看來你Gij比完之後如果元素位置有更動, Gij的值也 10/25 02:11
loveme00835:要換才是 10/25 02:12
loveme00835:阿我看錯@@" 10/25 02:13