stable_iterator.h 683 B

1234567891011121314151617181920212223242526272829
  1. #ifndef STABLE_ITERATOR_H
  2. #define STABLE_ITERATOR_H
  3. #include <vector>
  4. template
  5. <class T> class StableIterator
  6. {
  7. public:
  8. StableIterator(const StableIterator<T> &s)
  9. : _vec(s._vec), _offset(s._offset) {}
  10. StableIterator(std::vector<T> &vec, unsigned int offset)
  11. : _vec(vec), _offset(offset) {}
  12. T* getPtr() { return &(_vec[_offset]); }
  13. T* operator->() { return getPtr(); }
  14. T& operator*() { return *getPtr(); }
  15. StableIterator<T> operator=(const StableIterator<T>&src)
  16. {
  17. return StableIterator<T>(src._vec, src._offset);
  18. }
  19. private:
  20. std::vector<T> & _vec;
  21. unsigned int _offset;
  22. };
  23. #endif