一連のコンテナーにアクセスする一般的な方法を見つけようとしています。別のカスタム リストに加えて、標準のベクターとリストがあります。
カスタム リストは反復子を定義します。
class Iterator: public std::iterator<std::forward_iterator_tag, T> {
// ...
}
Iterator begin() {
return (Iterator(root));
}
Iterator end() {
return (Iterator(NULL));
}
適切な演算子がオーバーロードされています。
理想的には、これを行いたいと思います。
class Foo {
public:
Foo() {
std::list<int> x;
std::vector<int> y;
custom_list<int> z;
iter = x.begin(); // OR
iter = y.begin(); // OR
iter = z.begin();
// ...
};
private:
std::iterator<int> iter;
};
しかし明らかに、これらはすべて異なる型の反復子です。ただし、すべてのコンテナが同じタイプであると想定できます。
この問題を解決するエレガントな方法はありますか?