implémentation d'un "bounded iterator"
Bonjour,
Je cherche à savoir quelle est la meilleure manière de faire un itérateur qui serait limité à un certain interval de mon containeur, ceci afin que --(containeur.begin()) reste sur le premier élément de mon containeur et ne parte pas je ne sais où.
Il y a-t-il un moyen plus facile (que j'aurais loupé) autre que de créer une nouvelle classe ?
edit:
est-ce que quelque chose du genre est la manière la plus simple de procéder ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| template<class T>
class Slider {
private:
T::iterator iterator;
T* container;
public:
Slider(const T& container) :
iterator(container.begin()), container(&container) {
}
Slider<T>& operator++() {
if (iterator != --container->end())
++iterator;
return *this;
}
Slider<T>& operator--() {
if (iterator != container->begin())
--iterator;
return *this;
}
}; |