FREE Subscription to Dr. Dobb’s Digest: Same Great Content, New Digital Edition
Site Archive (Complete)
C++
Email
Print
Reprint

add to:
Del.icio.us
Digg
Google
Furl
Slashdot
Y! MyWeb
Blink
October 01, 2000

Are Set Iterators Mutable or Immutable?

(Page 3 of 3)
October 2000 C++ Experts Forum/Effective Standard C++ Library/Listing 1

Listing 1: The balanceIterator adapter

class balanceIterator 
{
public:
  typedef set<account>::iterator           adapted_type;
  typedef adapted_type::iterator_category  iterator_category;
  typedef adapted_type::value_type         value_type;
  typedef adapted_type::distance_type      difference_type;
  typedef double*                          pointer;
  typedef double&                          reference;

balanceIterator() {} explicit balanceIterator(adapted_type i) :adaptee(i) {} template <class Iter>

adapted_type base() const { return adaptee; }

reference operator*() const {return const_cast<reference>(adaptee->balance()); } pointer operator->() const { return &(operator*()); }

balanceIterator& operator++() { ++adaptee; return (*this); } balanceIterator operator++(int) { balanceIterator _Tmp = *this; ++adaptee; return (_Tmp); } balanceIterator& operator--() { --adaptee; return (*this); } balanceIterator operator--(int) { balanceIterator _Tmp = *this; --adaptee; return (_Tmp); } private: adapted_type adaptee; };

inline bool operator==(const balanceIterator& x, const balanceIterator& y) { return x.base() == y.base(); } inline bool operator!=(const balanceIterator& x, const balanceIterator& y) { return x.base() != y.base(); }

Previous Page | 1 | 2 | 3
RELATED ARTICLES
No Related Articles
TOP 5 ARTICLES
No Top Articles.



MICROSITES
FEATURED TOPIC

ADDITIONAL TOPICS

INFO-LINK