2

当我有一个键/值对由以下内容组成的地图时,什么是好的解决方案

struct Hexagonal_Coordinates { int x, y; };

class Hexagon {
    // stuff
}

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

我可以将Hexagonal_Coordinatesused as 键复制到相应的Hexagon对象中,但这会带来不匹配的可能性,并且复制数据通常很糟糕。

4

2 回答 2

2

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

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

于 2013-09-13T16:45:26.207 回答
0

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

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

于 2013-09-13T16:40:06.103 回答