当我有一个键/值对由以下内容组成的地图时,什么是好的解决方案
struct Hexagonal_Coordinates { int x, y; };
class Hexagon {
// stuff
}
我需要反向查找?也就是说,确定Hexagon
先前放置在地图中的坐标。
我可以将Hexagonal_Coordinates
used as 键复制到相应的Hexagon
对象中,但这会带来不匹配的可能性,并且复制数据通常很糟糕。
当我有一个键/值对由以下内容组成的地图时,什么是好的解决方案
struct Hexagonal_Coordinates { int x, y; };
class Hexagon {
// stuff
}
我需要反向查找?也就是说,确定Hexagon
先前放置在地图中的坐标。
我可以将Hexagonal_Coordinates
used as 键复制到相应的Hexagon
对象中,但这会带来不匹配的可能性,并且复制数据通常很糟糕。
我认为您正在寻找的是双向地图,可通过键或值进行搜索。如果是这种情况,boost 库有多索引容器,它就是这样做的:
http://www.boost.org/doc/libs/1_54_0/libs/multi_index/doc/index.html
我认为您的两个基本选项是将坐标的副本/指针/引用粘贴到 中Hexagon
,或者保留第二张映射Hexagon
到其坐标的地图。无论哪种方式,你都有一些保养。
我想还有另一种选择,您可以对原始地图中的键/值进行详尽的线性搜索,直到找到您的Hexagon
,然后返回其坐标。更简单,但更慢。