看板 C_and_CPP 關於我們 聯絡資訊
各位板友好 小弟現在碰到一個問題 以下是我的程式碼的部份 struct p { int x; int y; p(const int ix,const int iy): x(ix),y(iy){} bool operator<(const p & cp) const { return x< cp.x; //根據x值做排序 } } //現在我宣告一個set set<p> sp; sp.insert(p(25,0)); sp.insert(p(555,1)); sp.insert(p(35,2)); sp.insert(p(35,3)); //問題1:目前sp並沒有p(35,3),但是卻放不進去(sp會判斷說已 //經有(35,3)了) int c=R.size(); cout<c<<endl; //本來預期要有4個元素,但是卻只有3個元素(少了p(35,3)) 如果把set改成multiset可以解決第一個問題(why??) 但是在計算p(35,3)的時候 int t=R.count(p(35,3)); cout<<t<<endl; //問題2:預期應該只有一個p(35,3),但是這邊卻是印出兩個... 感覺在這邊set似乎沒辦法"完全"根據struct的內容正確地分別每個要insert的element 像上面的例子set把p(35,3)跟p(35,2)判斷成同一個東西 請問為什麼會出現這種情形?? 請問有什麼辦法可以解決這種情形嘛?? 謝謝各位板友的指教 -- ~宅男的四個徵兆~ ∠□ ○ ! * \○/ ★    (○ ? ╦╦└□ " ○□═ □   □> ║║√√ ╦══╦ ∥    |\ 一回家就上PTT 每天想正妹 以當好人為樂 忘記正妹虧欠自己 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.197.57 ※ 編輯: Arim 來自: 114.32.197.57 (05/15 00:15)
LPH66:set 判斷相等是兩個元素誰都不小於另一個 05/15 00:41
LPH66:你需要改正你的 operator < 05/15 00:41
loveme00835:你可以說說必須使用 std::set 的理由嗎? 05/15 16:53