c++ - 纬度经度的哈希/ key 创建功能?

标签 c++ c stl hash

我有与纬度/经度值关联的数据 block 。我想从纬度/经度值创建一个查找键/哈希值,以便它可以用作对 map 或类似内容的查找。

我对西部和南部使用负值...因此 5W、10S 在程序中表示为 -5、-10。

如果可能的话,我希望能够从键值中取回纬度/经度值。

派生值必须是某种整数值。

我正在使用 C/C++ :)

谢谢,我很乐意回答任何问题!

最佳答案

您并不是真正在寻找哈希(哈希通常分散底层键,并且它们允许冲突)。

我认为,像下面这样的简单公式就可以解决问题,而且它是可逆的。

[pseudo code]
Precision = 100       // lat and long precsion, boost to 1000 if need be
LatOffset = 1000      // Anithing above 180 would do

Key = ((int)(Lat * Precision) * LatOffset) + (int)(Long * Precision)

反转

Long = (Key Modulo (LatOffset * Precision)) Div Precision
Lat  = (Key Div (LatOffset * Precision)) Div Precision )

编辑:糟糕,我没有注意到这是在 C 中。确实,使用 jheddings 的解决方案(或其变体(要求“散列”键是整数))。

关于c++ - 纬度经度的哈希/ key 创建功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1694902/

相关文章:

c++ - 将 int 添加到 char 数组

c - 我应该在初始化失败后使用 SDL_Quit() 吗?

objective-c - 无法在 Objective-C/C 中正确 malloc

c++ - 在 dll 导出函数中使用 std::vector 的含义

c++ - 如何知道要在命令行中链接的库?

C++ sdl : can i have an sdl-opengl window inside a menu and buttons i created with glade?

c++ - 使用 boost::async w/o c++11

c - 删除尾随空格的程序不起作用! :(

C++:为什么 std::system ("exit 1") 返回 256?

c++ - 标准库/模板容器的 const 语义的经验法则?