9

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

3 回答 3

4

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

于 2009-06-30T05:55:12.057 回答
2

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

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

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

于 2009-06-30T06:01:43.917 回答
0

Roger Pate,value_types 是“简单的”。如果您查看 iterator_traits::const_iterator>::reference,我怀疑您会看到 const,我认为它将是“const int&”。

于 2010-01-14T16:40:04.853 回答