イテレータの種類によって異なります。前方反復子 (最も単純) の場合、次のものが必要です。
class ForwardIterator
{
public:
typedef ... difference_type; // usually ptrdiff_t
typedef ... value_type;
typedef ... pointer; // usually value_type*
typedef ... reference; // must be value_type&
typedef std::forward_iterator_tag iterator_category;
// advance...
ForwardIterator& operator++();
ForwardIterator operator++( int );
// access...
reference operator*() const;
pointer operator->() const;
// check for end...
bool operator==( Iterator const& other ) const;
bool operator!=( Iterator const& other ) const;
};
イテレータ型に特化しない限り、これらtypedef
は必要です
。std::iterator_traits
それらは、から公開的に継承することによって提供される場合があります (これにより、およびstd::iterator
を除くすべてに適切なデフォルトが
提供されます)。iterator_category
value_type
双方向イテレータにも 2 つが必要operator--
で、ランダム アクセス イテレータにはさらに多くの が必要です。