Încerc să găsesc o modalitate generică de a accesa un set de containere. Am un vector standard și o listă în plus față de o altă listă personalizată.
Lista personalizată definește un iterator;
class Iterator: public std::iterator {
//...
}
Iterator begin() {
return (Iterator(root));
}
Iterator end() {
return (Iterator(NULL));
}
cu operatorii corespunzători supraîncărcați.
În mod ideal, aș dori să fac acest lucru;
class Foo {
public:
Foo() {
std::list x;
std::vector y;
custom_list z;
iter = x.begin();//OR
iter = y.begin();//OR
iter = z.begin();
//...
};
private:
std::iterator iter;
};
Dar, evident, toate acestea sunt iteratori de diferite tipuri. Pot să presupun că toate containerele sunt de același tip.
Există o modalitate elegantă de a rezolva această problemă?