使用地图反向查找

时间:2013-09-13 16:31:52

标签: c++

当我的地图的键/值对由以下

组成时,有什么好的解决方案
struct Hexagonal_Coordinates { int x, y; };

class Hexagon {
    // stuff
}

我需要反向查找?也就是说,确定先前放入地图的Hexagon的坐标。

我可以将用作密钥的Hexagonal_Coordinates复制到相应的Hexagon对象中,但这会导致不匹配的可能性,并且重复数据通常很糟糕。

2 个答案:

答案 0 :(得分:2)

我认为您正在寻找的是双向地图,可以通过键或值进行搜索。如果是这种情况,则boost库具有多索引容器,它就是这样:

http://www.boost.org/doc/libs/1_54_0/libs/multi_index/doc/index.html

答案 1 :(得分:0)

我认为你的两个基本选项是在Hexagon中粘贴coords的副本/指针/引用,或者保留第二个将Hexagon映射到其coords的地图。无论哪种方式,你都有一些保养。

我想还有另一种选择,你可以对原始地图中的键/值进行详尽的线性搜索,直到找到Hexagon,然后返回其坐标。更简单但更慢。