Question

I've written my own container template with an iterator. How do I implement const_iterator?

template <class T>
class my_container {
 private:
  ...

 public:
  my_container() : ... { }
  ~my_container() { }

  class iterator : public std::iterator<std::bidirectional_iterator_tag, T> {
  public: ...
Was it helpful?

Solution

The only difference should be that when you de-reference a const iterator you get a const reference rather than a reference to the object in the container.

OTHER TIPS

I find the easiest way to implement iterators is boost::iterator. If you want to roll your own, I think the signature should be:

class const_iterator : public std::iterator<std::bidirectional_iterator_tag, const T> {

with the implementation the same (assuming you are using reference_type and so forth in your function signatures)

Roger Pate, value_types are "simple". I suspect you'll see the const if you look at iterator_traits::const_iterator>::reference, which I think will be "const int&".

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top