0

我试图在我制作的自定义容器类中编写迭代器类,并且我在类中定义了编写此行的特征

reference operator*() const {return value->item;}

然后在网络上进行一些研究后,我找到了一种更好的方法来做到这一点,即在迭代器类的 std 命名空间内定义 iterator_traits,然后在容器类之外编写我的迭代器类,这使得代码更具可读性,但之前的错误是我通过编写模板来修复

T& operator*() const {return value->item;}

所以我想知道是否有办法我仍然可以使用第一行代码

template <typename T>
class CustomIterator{
    using node = node<T>;
    node *value;
public:


    T& operator*() const {return value->item;}
    T& operator[] (size_t index) const { return *(index + *this); }

};

namespace std {
    template<typename T>
    class iterator_traits<CustomIterator<T> >
    {
    public:
        using difference_type = std::ptrdiff_t;
        using size_type = std::size_t;
        using value_type = T;
        using pointer = T*;
        using reference = T&;
        using iterator_category = std::random_access_iterator_tag;
    };
}
4

0 回答 0