コンテナのセットにアクセスする一般的な方法を探しています。私は別のカスタムリストに加えて標準ベクトルとリストを持っています。汎用イテレータ
カスタムリストはイテレータを定義します。
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;
};
もちろん、これらはすべて異なるタイプのイテレータです。しかし、私はすべての容器が同じタイプであると仮定することができます。
この問題を解決するにはエレガントな方法がありますか?ここで
Thomas Becker(上記の2番目のリンクの著者)は優れた長い記事を持っています:http://www.artima.com/cppsource/type_erasure.html – Adrian
@Adrian - その記事は素晴らしかったです:それを共有してくれてありがとうD ! – nevelis