当我的地图的键/值对由以下
组成时,有什么好的解决方案struct Hexagonal_Coordinates { int x, y; };
class Hexagon {
// stuff
}
我需要反向查找?也就是说,确定先前放入地图的Hexagon
的坐标。
我可以将用作密钥的Hexagonal_Coordinates
复制到相应的Hexagon
对象中,但这会导致不匹配的可能性,并且重复数据通常很糟糕。
答案 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
,然后返回其坐标。更简单但更慢。