Je suis en train d'essayer de trouver un moyen générique de l'accès à un ensemble de conteneurs. J'ai une norme du vecteur et de la liste en plus d'une autre liste personnalisée.
La liste personnalisée définit un itérateur;
class Iterator: public std::iterator<std::forward_iterator_tag, T> {
// ...
}
Iterator begin() {
return (Iterator(root));
}
Iterator end() {
return (Iterator(NULL));
}
avec les opérateurs surchargés.
Idéalement, je voudrais pour ce faire;
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;
};
Mais, évidemment, ce sont tous les itérateurs de différents types. Je peux supposer que tous les contenants sont du même type, cependant.
Est-il un moyen élégant pour résoudre ce problème?