我用迭代器编写了自己的容器模板。如何实现 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: ...
我用迭代器编写了自己的容器模板。如何实现 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: ...
唯一的区别应该是,当您取消引用 const 迭代器时,您会得到一个 const 引用,而不是对容器中对象的引用。
我发现实现迭代器的最简单方法是boost::iterator。如果你想自己动手,我认为签名应该是:
class const_iterator : public std::iterator<std::bidirectional_iterator_tag, const T> {
实现相同(假设您在函数签名中使用 reference_type 等)
Roger Pate,value_types 是“简单的”。如果您查看 iterator_traits::const_iterator>::reference,我怀疑您会看到 const,我认为它将是“const int&”。