假設我想用C++實現一個數據結構來存儲面向圖。感謝STL容器,Arcs將被存儲在節點中。我希望用戶能夠以類似STL的方式迭代節點的弧。返回一個'任何類型的輸入迭代器'而不是一個vector :: iterator或一個list :: iterator
我遇到的問題是,我不想公開在Node類(實際上是一個抽象基類)哪個STL容器,我將實際在具體類中使用。因此,我不想讓我的方法返回的std ::目錄::迭代器或std ::矢量::迭代器......
我嘗試這樣做:
class Arc;
typedef std::iterator<std::random_access_iterator_tag, Arc*> ArcIterator; // Wrong!
class Node {
public:
ArcIterator incomingArcsBegin() const {
return _incomingArcs.begin();
}
private:
std::vector<Arc*> _incomingArcs;
};
但是,這是不正確的,因爲vector :: const_iterator不能用於創建ArcIterator。那麼,這個ArcIterator可以做什麼?
我發現這篇文章約Custom Iterators for the STL但它沒有幫助。我今天肯定有點沉重......;)
我一直很高興'boost:graph`。如果你真的爲圖結構編寫適配器,請考慮使用它。 – 2011-02-03 15:47:04
[我剛纔問了一個類似的問題](http:// stackoverflow。com/questions/9938/generic-iterator) – Mark 2008-09-24 14:02:28