我试图在我制作的自定义容器类中编写迭代器类,并且我在类中定义了编写此行的特征
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;
};
}