公众视野我有一个秘密范围的Boost.BiMap的一类,我想出口的该地图的一部分公众视野。我有下面的代码的两个问题:暴露私人范围的Boost.BiMap迭代
class Object {
typedef bimap<
unordered_set_of<Point>,
unordered_multiset_of<Value>
> PointMap;
PointMap point_map;
public:
??? GetPoints(Value v) {
...
}
的第一个问题是,如果我的迭代的方法来获取与Value
关联是正确的Point
的。以下是我用来遍历点的代码。我的问题是,如果我循环正确,因为我发现,我必须包括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()
的最佳途径。任何有效的结构(如引用列表或集合)都可以工作,但我在创建集合方面有点遗憾。
谢谢!
关于第二个问题的第一种方法,PointMap是否需要公开作用域?我可以为公共接口使用某种类型的泛型迭代器吗? – 2012-01-28 22:19:06
PointMap仍然可以是私人的。我的示例代码中的typedef match_iterator需要是公开的,因此它可以被类之外的代码使用。 – user450018 2012-01-29 08:49:35