【发布时间】:2021-08-06 02:57:28
【问题描述】:
我正在寻找一个二维表的反向查找,即表:F(x,y),给定 F,找到 x 和 y
我当前的方法使用嵌套的 for 循环在表中搜索所有 x 和 y,以在某些错误中找到 F。这里的复杂之处在于,查询到的“F”可能与我的查找表中的“F”不完全匹配。我的桌子上也有 NaN。我希望这个程序能找到离查询的“F”最近的“F”。
该表目前是一个二维数组,但我认为这里的地图可能更合适。我知道如何从中创建多维地图:https://www.geeksforgeeks.org/implementing-multidimensional-map-in-c/
我还在这里找到了一些关于如何使用 Boost 对一维地图进行反向地图查找的很好的答案(特别是 @Rob):Reverse map lookup
我在结合这两种方法以及 findNearest 功能时遇到了一些麻烦。
【问题讨论】:
-
您可能需要一个二维空间分区数据结构,例如四叉树。
-
表有变化吗?如果没有,只需创建一个包含所有 (F, x, y) 三元组的向量并对其进行排序。然后 findNearest() 相当于在这个向量中执行二进制搜索,并选择任一侧更接近目标的元素。
-
你能分享你的LUT吗?所以我们实际上可以看到你有什么......理想情况下还可以使用 3D 绘图预览......也可以查看Reverse complex 2D lookup table
标签: c++ algorithm boost c++14 linear-search