次のようなものがあるとします。
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>
しかし、実装の詳細だけを作成したい場合は、逆参照を 1 回行った後、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?