私は、セントラルデータメンバーとしてSTL std::vector
を含むカスタムクラスを実装しています。 ここでは、このクラスがイテレータを提供することを望みます。このイテレータは、このベクトルを反復処理するだけで、C++ 11の範囲ベースの反復処理でも動作します。 まったく同じ仕事をすることになっているので、ちょうど何とかイテレータをstd::vector::iterator
から継承することは魅力的です。これは可能ですか、完全にカスタムのイテレータを実装する必要がありますか?カスタムクラスのためにstd :: vector :: iteratorを継承していますか?
class Custom {
private:
std::vector<double> _data;
public:
class iterator {
// Want this to provide an interface to iterate through _data
// ...
};
// ...
};
Custom C;
// Populate C with data ...
for (const auto& item : C) {
// This should print the elements within _data.
std::cout << item << std::endl;
}
なぜ "継承":ここでは
は、迅速なスニペットのですか?単にtypedefでないのはなぜですか? 'class Custom {iterator = std :: vectorを使用しています。 :: iterator; '_data.begin()'と '_data.end()'に転送することによって 'begin()'と 'end()'を実装する必要があります –