Я новичок в C ++, поэтому, пожалуйста, потерпите меня.Я пытаюсь понять STL iterator_traits.В книге «Стандартная библиотека C ++» структура iterator_traits определена следующим образом:
template <class T>
struct iterator_traits{
typedef typename T::value_type value_type
typedef typename T::difference_type difference_type
typedef typename T::iterator_category iterator_category
typedef typename T::pointer pointer
typedef typename T::reference reference
}
Так что мне кажется, что она повторно выставляет подтипы, которые уже выставляет T
.Продвигаясь дальше, в книге приведен пример того, как его использовать, что-то вроде следующего:1008 *, разве я не могу получить его напрямую от MyIterator
?Моя путаница, кажется, возникает из-за моего (безусловно, неверного) понимания, что информация о подтипах должна быть взята из template <class T>
, используемого для создания экземпляра iterator_trait.Так что, если бы вы могли объяснить, и желательно с примером, зачем и где мне понадобится iterator_traits, это было бы очень полезно.