C++ 定位点/搜索点在哪个矩形中?

C++ 定位点/搜索点在哪个矩形中?,c++,search,data-structures,location,C++,Search,Data Structures,Location,我有N个不相交的矩形。每个矩形都有一个与之关联的名称/编号。现在我得到了一个查询点(x,y)。我必须回答点所在矩形的名称,如果没有矩形,则回答-1。 有Q这样的查询。只有在显示当前查询的结果时,我们才能得到下一个查询。 1您是否希望在代码中执行此操作,是否可以在数据库中执行此操作。所有主要的数据库,包括商业数据库和开源数据库,都支持空间数据类型和空间索引,这使得此类查询非常容易回答。您还可以使用java.awt.Polygon类和contains方法来实现这一点。你用C++标记了这个问题,这里有

我有N个不相交的矩形。每个矩形都有一个与之关联的名称/编号。

现在我得到了一个查询点(x,y)。我必须回答点所在矩形的名称,如果没有矩形,则回答-1。

Q这样的查询。只有在显示当前查询的结果时,我们才能得到下一个查询。


1您是否希望在代码中执行此操作,是否可以在数据库中执行此操作。所有主要的数据库,包括商业数据库和开源数据库,都支持空间数据类型和空间索引,这使得此类查询非常容易回答。您还可以使用java.awt.Polygon类和contains方法来实现这一点。你用C++标记了这个问题,这里有一个多边形的点答案:我想在代码中这样做。我有多达10^6个查询和10^6个矩形,因此需要高度优化的算法。每个查询都需要用O(logn)来回答。多边形中的点是一个非常有效的算法。你知道kd树的数据结构吗。这是非常有效的搜索,可能适合您的目的。是的,但这是不同的,我们不仅仅是搜索一个点是否在多边形中。我们有多达10^6个矩形(或多边形)。多边形中的点相当有效,尽管矩形中的点是更好的解决方案。即使如此,您也不希望对每个查询执行一百万个矩形点操作。k-d树绝对是通往这里的道路。