C ++:如何编写const_iterator?

时间:2009-06-30 05:40:16

标签: c++ iterator const-iterator

我用迭代器编写了自己的容器模板。我如何实现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: ...

3 个答案:

答案 0 :(得分:4)

唯一的区别应该是当你取消引用const迭代器时,你得到一个const引用,而不是对容器中对象的引用。

答案 1 :(得分:2)

我发现实现迭代器的最简单方法是boost::iterator。如果你想自己动手,我认为签名应该是:

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

与实现相同(假设您在函数签名中使用reference_type等)

答案 2 :(得分:0)

Roger Pate,value_types“简单”。如果你看一下iterator_traits :: const_iterator&gt; :: reference,我怀疑你会看到const,我认为这将是“const int&amp;”。