PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
[問題] c++ sort的用法
作者:
hydebeast
(雷槍)
2018-01-25 12:33:51
rt
如果小弟寫了一個class p
p(string s, int n)
接著
p a("a", 1);
p b("b", 2);
然後想用sort以n的大小來排序
比如想大到小的話排起來就是b a
請問該怎麼寫呢?
作者:
LPH66
(-6.2598534e+18f)
2018-01-25 12:37:00
問1: 如果不是 class p 而是普通數字你會寫嗎?問2: 寫過運算子覆載嗎?
作者:
Sidney0503
(Sidney0503)
2018-01-25 12:38:00
放到container然後使用std::sort然後自定義operator<不好意思說錯 是自定義functor
作者:
hydebeast
(雷槍)
2018-01-25 13:08:00
l大 會的s大 不好意思可以稍微詳細一點嗎?
作者:
alan23273850
2018-01-25 13:39:00
簡單來說就是針對新物件自定義大小關係,網路上都找得到,有兩種寫法關鍵字:cpp custom sort
作者:
BlazarArc
(Midnight Sun)
2018-01-25 13:46:00
http://en.cppreference.com/w/cpp/algorithm/sort
三樓說的用std::sort (3)的用法 下面也有例子
作者:
hydebeast
(雷槍)
2018-01-25 13:52:00
小弟參考網路類似的例子 bool cmp(p&a, p&b){return a<b} 然後再sort(c.begin(),c.end(),cmp)c是vector<p*>c 可是這樣會錯誤 好像是因為我的cmp裡面是p& vector是p*嗎?抱歉小弟對&跟*還很混亂 可是不管想把cmp的&改*還是反過來vector的*改&都會錯誤另外還到定義operator<(p&a,p&b){return a.n<b.n}然後直接sort的做法 可是這樣sort出來跟沒定義<的時候沒差別@@
作者:
loveflames
(咕啾咕啾魔法陣)
2018-01-25 14:00:00
http://www.cplusplus.com/reference/algorithm/sort/
作者:
hydebeast
(雷槍)
2018-01-25 14:12:00
小弟目前網路看到的都是類似bool cmp那個的做法 都會出現*跟&的問題 請問怎麼解QQ對*跟&真的不熟
作者:
Sidney0503
(Sidney0503)
2018-01-25 14:33:00
上面已經說了關鍵字:cpp custom sort 英文google第一篇就是了
作者:
hydebeast
(雷槍)
2018-01-25 14:53:00
" target="_blank" rel="nofollow">
小弟照搜尋第一篇的方法 但編譯不會過 就是上面有講到的*跟&的問題 但不會改…
" target="_blank" rel="nofollow">
上面的程式碼
作者:
loveflames
(咕啾咕啾魔法陣)
2018-01-25 14:55:00
又來一個貼圖的,你是嫌上面幾篇電的不夠嗎
作者:
hydebeast
(雷槍)
2018-01-25 14:59:00
https://ideone.com/DZGBYz
很抱歉~
作者:
Sidney0503
(Sidney0503)
2018-01-25 15:07:00
不要使用* 初學直接傳實體就好
作者:
hydebeast
(雷槍)
2018-01-25 15:15:00
程式碼本身是題目給的 他只要求把sort部分寫出來 而且小弟有試著把*都去掉 可是person p會出錯…另外三個class裡面的public也是小弟寫的 不過如果沒加sort的話跑起來結果是對的 還是說那部分有錯呢?
作者: jerryh001
2018-01-25 15:28:00
cmp不對 應該要person* 而不是const person&
作者:
hydebeast
(雷槍)
2018-01-25 15:34:00
j大我有改過那樣 不過這樣a.ID會錯 他說expression must have class type
作者:
LPH66
(-6.2598534e+18f)
2018-01-25 15:40:00
我覺得你先回頭搞懂 * & 的意義跟用法再回到這題上來好了你這裡撞到的問題都跟你原來的 sort 幾乎無關反而都是 * & 這些觀念不清楚造成的
作者:
loveflames
(咕啾咕啾魔法陣)
2018-01-25 15:41:00
你不會把問題單純化嗎,明明問題只是在怎麼排序,非得連繼承也一起扯進來
作者:
LPH66
(-6.2598534e+18f)
2018-01-25 15:41:00
你這裡面只有一個地方跟 sort 有關:比較函數收的型態是元素型態, 你的元素是 p* 它就收 p*你的元素是 p 它就收 p; 至於怎麼寫就要看你參數是什麼這裡就是我說你沒搞懂的地方了, 不是 * & . -> 亂試而是去知道寫這個符號代表什麼意義, 要怎麼找到你要的資料
作者:
loveflames
(咕啾咕啾魔法陣)
2018-01-25 15:45:00
不熟麻煩請循序漸進,不是把一堆有問題的code拼湊起來然後才問問題在哪,根本大哉問
作者:
hydebeast
(雷槍)
2018-01-25 16:05:00
感謝各位跟L大 解出來了*LP大
作者:
pizzafan
(七情三想)
2018-01-25 18:38:00
https://www.youtube.com/watch?v=MZaf_9IZCrc
↑這邊有youtuber嗎? 要做中文版講解嗎? 或是改良更好些
繼續閱讀
[討論] zookeeper 在 Windows 上的c api
kay0715
Re: [問題] 字元與字串的關係
zzss2003
[問題] 字元與字串的關係
zzss2003
[問題] 使用光流法發生錯誤
zxcv40711
[問題] C/C++ 輸出動態連結給python呼叫
hardman1110
[問題] 利用sort排序vector
yamakazi
Fw: [問題] 單做數值計算有需要再學資料結構嗎?
j0958322080
[問題] 錯誤
iwantfly
[問題] 編譯不過
tizzychen
[問題] PlaySound與pthread的error
Ikaros1110
Links
booklink
Contact Us: admin [ a t ] ucptt.com