[問題] c++ sort的用法

看板C_and_CPP作者 (晴日橘子)時間6年前 (2018/01/25 12:33), 編輯推噓7(8146)
留言55則, 8人參與, 6年前最新討論串1/1
rt 如果小弟寫了一個class p p(string s, int n) 接著 p a("a", 1); p b("b", 2); 然後想用sort以n的大小來排序 比如想大到小的話排起來就是b a 請問該怎麼寫呢? ----- Sent from JPTT on my Sony D6653. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.105.52.141 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1516854834.A.C0D.html

01/25 12:37, 6年前 , 1F
問1: 如果不是 class p 而是普通數字你會寫嗎?
01/25 12:37, 1F

01/25 12:38, 6年前 , 2F
問2: 寫過運算子覆載嗎?
01/25 12:38, 2F

01/25 12:38, 6年前 , 3F
放到container然後使用std::sort
01/25 12:38, 3F

01/25 12:38, 6年前 , 4F
然後自定義operator<
01/25 12:38, 4F

01/25 12:47, 6年前 , 5F
不好意思說錯 是自定義functor
01/25 12:47, 5F

01/25 13:08, 6年前 , 6F
l大 會的
01/25 13:08, 6F

01/25 13:08, 6年前 , 7F
s大 不好意思可以稍微詳細一點嗎?
01/25 13:08, 7F

01/25 13:39, 6年前 , 8F
簡單來說就是針對新物件自定義大小關係,網路上都
01/25 13:39, 8F

01/25 13:39, 6年前 , 9F
找得到,有兩種寫法
01/25 13:39, 9F

01/25 13:39, 6年前 , 10F
關鍵字:cpp custom sort
01/25 13:39, 10F

01/25 13:46, 6年前 , 11F

01/25 13:46, 6年前 , 12F
三樓說的用std::sort (3)的用法 下面也有例子
01/25 13:46, 12F

01/25 13:52, 6年前 , 13F
小弟參考網路類似的例子 bool cmp(p&a, p&b)
01/25 13:52, 13F

01/25 13:53, 6年前 , 14F
{return a<b} 然後再sort(c.begin(),c.end(),cmp)
01/25 13:53, 14F

01/25 13:54, 6年前 , 15F
c是vector<p*>c 可是這樣會錯誤 好像是因為我的cmp裡
01/25 13:54, 15F

01/25 13:55, 6年前 , 16F
面是p& vector是p*嗎?抱歉小弟對&跟*還很混亂 可是不
01/25 13:55, 16F

01/25 13:56, 6年前 , 17F
管想把cmp的&改*還是反過來vector的*改&都會錯誤
01/25 13:56, 17F

01/25 13:58, 6年前 , 18F
另外還到定義operator<(p&a,p&b){return a.n<b.n}
01/25 13:58, 18F

01/25 13:59, 6年前 , 19F
然後直接sort的做法 可是這樣sort出來跟沒定義<的時候
01/25 13:59, 19F

01/25 13:59, 6年前 , 20F
沒差別@@
01/25 13:59, 20F

01/25 14:00, 6年前 , 21F

01/25 14:12, 6年前 , 22F
小弟目前網路看到的都是類似bool cmp那個的做法 都會出
01/25 14:12, 22F

01/25 14:12, 6年前 , 23F
現*跟&的問題 請問怎麼解QQ對*跟&真的不熟
01/25 14:12, 23F

01/25 14:33, 6年前 , 24F
上面已經說了關鍵字:cpp custom sort 英文google
01/25 14:33, 24F

01/25 14:33, 6年前 , 25F
第一篇就是了
01/25 14:33, 25F

01/25 14:53, 6年前 , 26F
小弟照搜尋第一篇的方
01/25 14:53, 26F

01/25 14:53, 6年前 , 27F
法 但編譯不會過 就是上面有講到的*跟&的問題 但不會改
01/25 14:53, 27F

01/25 14:53, 6年前 , 28F
01/25 14:53, 28F

01/25 14:54, 6年前 , 29F
01/25 14:54, 29F

01/25 14:55, 6年前 , 30F
又來一個貼圖的,你是嫌上面幾篇電的不夠嗎
01/25 14:55, 30F

01/25 14:59, 6年前 , 31F
01/25 14:59, 31F

01/25 15:07, 6年前 , 32F
不要使用* 初學直接傳實體就好
01/25 15:07, 32F

01/25 15:15, 6年前 , 33F
程式碼本身是題目給的 他只要求把sort部分寫出來 而且
01/25 15:15, 33F

01/25 15:15, 6年前 , 34F
小弟有試著把*都去掉 可是person p會出錯…
01/25 15:15, 34F

01/25 15:19, 6年前 , 35F
另外三個class裡面的public也是小弟寫的 不過如果沒加s
01/25 15:19, 35F

01/25 15:19, 6年前 , 36F
ort的話跑起來結果是對的 還是說那部分有錯呢?
01/25 15:19, 36F

01/25 15:28, 6年前 , 37F
cmp不對 應該要person* 而不是const person&
01/25 15:28, 37F

01/25 15:34, 6年前 , 38F
j大我有改過那樣 不過這樣a.ID會錯 他說expression mus
01/25 15:34, 38F

01/25 15:34, 6年前 , 39F
t have class type
01/25 15:34, 39F

01/25 15:40, 6年前 , 40F
我覺得你先回頭搞懂 * & 的意義跟用法再回到這題上來好了
01/25 15:40, 40F

01/25 15:40, 6年前 , 41F
你這裡撞到的問題都跟你原來的 sort 幾乎無關
01/25 15:40, 41F

01/25 15:40, 6年前 , 42F
反而都是 * & 這些觀念不清楚造成的
01/25 15:40, 42F

01/25 15:41, 6年前 , 43F
你不會把問題單純化嗎,明明問題只是在怎麼排序,非得
01/25 15:41, 43F

01/25 15:41, 6年前 , 44F
連繼承也一起扯進來
01/25 15:41, 44F

01/25 15:41, 6年前 , 45F
你這裡面只有一個地方跟 sort 有關:
01/25 15:41, 45F

01/25 15:42, 6年前 , 46F
比較函數收的型態是元素型態, 你的元素是 p* 它就收 p*
01/25 15:42, 46F

01/25 15:42, 6年前 , 47F
你的元素是 p 它就收 p; 至於怎麼寫就要看你參數是什麼
01/25 15:42, 47F

01/25 15:43, 6年前 , 48F
這裡就是我說你沒搞懂的地方了, 不是 * & . -> 亂試
01/25 15:43, 48F

01/25 15:43, 6年前 , 49F
而是去知道寫這個符號代表什麼意義, 要怎麼找到你要的資料
01/25 15:43, 49F

01/25 15:45, 6年前 , 50F
不熟麻煩請循序漸進,不是把一堆有問題的code拼湊起來
01/25 15:45, 50F

01/25 15:46, 6年前 , 51F
然後才問問題在哪,根本大哉問
01/25 15:46, 51F

01/25 16:05, 6年前 , 52F
感謝各位跟L大 解出來了
01/25 16:05, 52F

01/25 16:08, 6年前 , 53F
*LP大
01/25 16:08, 53F

01/25 18:38, 6年前 , 54F

01/25 18:39, 6年前 , 55F
↑這邊有youtuber嗎? 要做中文版講解嗎? 或是改良更好些
01/25 18:39, 55F
文章代碼(AID): #1QQLuomD (C_and_CPP)