我有一个二维整数坐标列表(坐标对)。我想阅读这些内容,然后确定是否已阅读某个点。
整数数据可能落在整数数据类型提供的范围内的任何位置,但实际数据点的数量会很少。因此,使用二维数组来跟踪已读取的点是不切实际的。Aset
似乎是这样做的好方法。
我目前完成此操作的代码如下:
#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
我怀疑比较器有问题,但不知道如何解决。
有什么想法吗?