4
假設我有這樣的事情:如何使迭代器「自動解除引用」?
class Collection
{
private:
typedef std::vector< std::shared_ptr<Something> >::iterator Iterator;
std::vector< std::shared_ptr<Something> > data_;
public:
Iterator begin() {return data_.begin()}
Iterator end() {return data_.end()}
}
當我使用一個Collection::Iterator
比如我要提領一次,以獲得std::shared_ptr<Something>
對象,並再次獲得Something
對象。
但是,如果我想使std::shared_ptr<Something>
只是一個實現細節,在一個解引用後,我應該得到一個Something
對象是合理的。
即:
Collection collection;
Collection::Iterator it = collection.begin();
Something firstMember = *it; // instead of the current **it;
我的問題是,我需要做的Iterator是一個從無到有的嵌套類的Collection
從這裏http://www.cplusplus.com/reference/std/iterator/或者實現所有隨機訪問迭代器所需要的功能是存在的一些衆所周知的方法?可能C++ 11?
boost :: indirect_iterator完全是我在找的!謝謝! – 2012-07-09 04:28:46