1
我有一個二維整數座標(座標對)的列表。我想閱讀這些內容,稍後,確定是否讀取了一個點。是一組中的二維整數座標嗎?
整數數據可能落在整數數據類型提供的範圍內的任何地方,但實際數據點的數量將很小。因此,使用二維數組來追蹤讀取哪些點是不切實際的。 A set
似乎是這樣做的好方法。
我當前的代碼來完成此如下:
#include <set>
#include <iostream>
using namespace std;
class grid_cell{
public:
int x,y;
grid_cell(int x, int y) : x(x), y(y) {}
grid_cell(){}
bool operator< (const grid_cell& a) const { return y<a.y || x<a.x; }
};
int main(){
set<grid_cell> bob;
bob.insert(grid_cell(1,1));
bob.insert(grid_cell(-1,1));
bob.insert(grid_cell(1,-1));
bob.insert(grid_cell(-1,-1));
cout<<bob.count(grid_cell(1,1))<<endl;
cout<<bob.count(grid_cell(-1,1))<<endl;
cout<<bob.count(grid_cell(1,-1))<<endl;
cout<<bob.count(grid_cell(-1,-1))<<endl;
}
但是要知道什麼是錯的,因爲我已經插入電池,其中後置告訴我,它不知道。上面的結果應該都是真實的,但是相反,如下所示。
1
1
0 <-?????
1
我懷疑比較是一個問題,但我不知道如何解決它。
有什麼想法?
你的比較操作是沒有意義的。在你做C++之前,先用筆和紙坐下來研究你的關係描述的內容。 – 2013-04-08 22:19:04
嘗試座標'(0,1)'和座標'(1,0)'與您的代碼。以任意順序。 – 2013-04-08 22:33:29