公衆視野我有一個祕密範圍的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