2013-04-08 29 views
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 

我懷疑比較是一個問題,但我不知道如何解決它。

有什麼想法?

+0

你的比較操作是沒有意義的。在你做C++之前,先用筆和紙坐下來研究你的關係描述的內容。 – 2013-04-08 22:19:04

+0

嘗試座標'(0,1)'和座標'(1,0)'與您的代碼。以任意順序。 – 2013-04-08 22:33:29

回答