看板 C_and_CPP 關於我們 聯絡資訊
struct Student { string id; int score; }; vector<Student> vec; bool compare(const Student& s1, const Student& s2) { if(s1.score == s2.score) { return(s1.id < s2.id); } return(s1.score < s2.score); } sort(vec.begin(), vec.end(), compare); 分數優先,學號次之,小排到大。code有問題一起討論。 Bleed ※ 引述《smallpig01 (http://0rz.tw/3BGhp)》之銘言: : 遇到一個學號比較的問題 : ex有五個學生,要比較分數高低,然後依序印出,假設分數一樣則比較學號 : 學號 分數 學號 分數 : A005 30 B003 50 : B003 50 E006 50 : A002 30 結果==> D001 40 : D001 40 A005 30 : E006 50 A002 30 : 分數的排序我會,但是遇到有英文字卡在前面的學號就不知道該怎麼比較了 : EX A002 B003 : A005 E006 : 這兩組的分數一樣,排序結果為 第一組002在005前面 第二組B在E前面 : 我目前只想到可以把前面的英文拆成 ASCII 碼 補在前方 : EX A005 = 63005 然後 存成 long int 的型態再去比 : 我的學號是存成String型態,不知道怎麼只取第一個英文字... : 還有其他更方便的方法可以比較這種類型的文字~ : 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.43.115.229
loveme00835:因為分數要遞減, 最後一行用!(s1.score < s2.score) 08/14 22:08
loveme00835:比較符合原原po的需求 08/14 22:08