作者Arim (Arim5566)
看板C_and_CPP
標題[問題] 關於set中的struct
時間Sun May 15 00:14:31 2011
各位板友好
小弟現在碰到一個問題
以下是我的程式碼的部份
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