我在一个类中有一个私有范围的 Boost.BiMap,我想导出这个地图的一部分的公共视图。我对以下代码有两个问题:
class Object {
typedef bimap<
unordered_set_of<Point>,
unordered_multiset_of<Value>
> PointMap;
PointMap point_map;
public:
??? GetPoints(Value v) {
...
}
第一个问题是我的迭代方法是否Point
与 a 相关联Value
是正确的。下面是我用来迭代这些点的代码。我的问题是我是否正确迭代,因为我发现我必须包含it->first == value
条件,并且不确定这是否需要考虑到我可能不知道的更好的界面。
PointMap::right_const_iterator it;
it = point_map.right.find(value);
while (it != point_map.right.end() && it->first == val) {
/* do stuff */
}
第二个问题是在???
不暴露 bimap 迭代器的情况下提供 GetPoints(上面的返回类型)的公共视图的最佳方法是什么,因为调用者似乎必须知道point_map.right.end()
. 任何有效的结构(例如引用列表或集合)都可以使用,但是我对如何创建集合有点迷茫。
谢谢!