.TH "std::reverse_iterator< _Iterator >" 3cxx "libstdc++" \" -*- nroff -*- .ad l .nh .SH NAME std::reverse_iterator< _Iterator > .SH SYNOPSIS .br .PP .PP \fC#include \fP .PP Inherits \fBstd::iterator< iterator_traits< _Iterator >::iterator_category, iterator_traits< _Iterator >::value_type, iterator_traits< _Iterator >::difference_type, iterator_traits< _Iterator >::pointer, iterator_traits< _Iterator >::reference >\fP\&. .SS "Public Types" .in +1c .ti -1c .RI "\fBtypedef\fP __traits_type::difference_type \fBdifference_type\fP" .br .ti -1c .RI "\fBtypedef\fP iterator_traits< _Iterator >::iterator_category \fBiterator_category\fP" .br .RI "One of the \fBtag types\fP\&. " .ti -1c .RI "\fBtypedef\fP _Iterator \fBiterator_type\fP" .br .ti -1c .RI "\fBtypedef\fP __traits_type::pointer \fBpointer\fP" .br .ti -1c .RI "\fBtypedef\fP __traits_type::reference \fBreference\fP" .br .ti -1c .RI "\fBtypedef\fP iterator_traits< _Iterator >::value_type \fBvalue_type\fP" .br .RI "The type 'pointed to' by the iterator\&. " .in -1c .SS "Public Member Functions" .in +1c .ti -1c .RI "_GLIBCXX17_CONSTEXPR \fBreverse_iterator\fP ()" .br .ti -1c .RI "_GLIBCXX17_CONSTEXPR \fBreverse_iterator\fP (\fBconst\fP \fBreverse_iterator\fP &__x)" .br .ti -1c .RI "template<\fBtypename\fP _Iter > _GLIBCXX17_CONSTEXPR \fBreverse_iterator\fP (\fBconst\fP \fBreverse_iterator\fP< _Iter > &__x)" .br .ti -1c .RI "_GLIBCXX17_CONSTEXPR \fBreverse_iterator\fP (iterator_type __x)" .br .ti -1c .RI "_GLIBCXX17_CONSTEXPR iterator_type \fBbase\fP () \fBconst\fP" .br .ti -1c .RI "_GLIBCXX17_CONSTEXPR reference \fBoperator*\fP () \fBconst\fP" .br .ti -1c .RI "_GLIBCXX17_CONSTEXPR \fBreverse_iterator\fP \fBoperator+\fP (difference_type __n) \fBconst\fP" .br .ti -1c .RI "_GLIBCXX17_CONSTEXPR \fBreverse_iterator\fP & \fBoperator++\fP ()" .br .ti -1c .RI "_GLIBCXX17_CONSTEXPR \fBreverse_iterator\fP \fBoperator++\fP (int)" .br .ti -1c .RI "_GLIBCXX17_CONSTEXPR \fBreverse_iterator\fP & \fBoperator+=\fP (difference_type __n)" .br .ti -1c .RI "_GLIBCXX17_CONSTEXPR \fBreverse_iterator\fP \fBoperator\-\fP (difference_type __n) \fBconst\fP" .br .ti -1c .RI "_GLIBCXX17_CONSTEXPR \fBreverse_iterator\fP & \fBoperator\-\-\fP ()" .br .ti -1c .RI "_GLIBCXX17_CONSTEXPR \fBreverse_iterator\fP \fBoperator\-\-\fP (int)" .br .ti -1c .RI "_GLIBCXX17_CONSTEXPR \fBreverse_iterator\fP & \fBoperator\-=\fP (difference_type __n)" .br .ti -1c .RI "_GLIBCXX17_CONSTEXPR pointer \fBoperator\->\fP () \fBconst\fP" .br .ti -1c .RI "\fBreverse_iterator\fP & \fBoperator=\fP (\fBconst\fP \fBreverse_iterator\fP &)=\fBdefault\fP" .br .ti -1c .RI "_GLIBCXX17_CONSTEXPR reference \fBoperator[]\fP (difference_type __n) \fBconst\fP" .br .in -1c .SS "Protected Types" .in +1c .ti -1c .RI "\fBtypedef\fP iterator_traits< _Iterator > \fB__traits_type\fP" .br .in -1c .SS "Protected Attributes" .in +1c .ti -1c .RI "_Iterator \fBcurrent\fP" .br .in -1c .SH "Detailed Description" .PP .SS "template<\fBtypename\fP _Iterator> .br class std::reverse_iterator< _Iterator >"Bidirectional and random access iterators have corresponding reverse iterator adaptors that iterate through the data structure in the opposite direction\&. They have the same signatures as the corresponding iterators\&. The fundamental relation between a reverse iterator and its corresponding iterator \fCi\fP is established by the identity: .PP .nf &*(reverse_iterator(i)) == &*(i \- 1) .fi .PP .PP \fIThis mapping is dictated by the fact that while there is always a pointer past the end of an array, there might not be a valid pointer before the beginning of an array\&.\fP [24\&.4\&.1]/1,2 .PP Reverse iterators can be tricky and surprising at first\&. Their semantics make sense, however, and the trickiness is a side effect of the requirement that the iterators must be safe\&. .PP Definition at line \fB105\fP of file \fBbits/stl_iterator\&.h\fP\&. .SH "Member Typedef Documentation" .PP .SS "template<\fBtypename\fP _Iterator > \fBtypedef\fP iterator_traits<_Iterator> \fBstd::reverse_iterator\fP< _Iterator >::__traits_type\fC [protected]\fP" .PP Definition at line \fB115\fP of file \fBbits/stl_iterator\&.h\fP\&. .SS "template<\fBtypename\fP _Iterator > \fBtypedef\fP __traits_type::difference_type \fBstd::reverse_iterator\fP< _Iterator >::difference_type" .PP Definition at line \fB119\fP of file \fBbits/stl_iterator\&.h\fP\&. .SS "\fBtypedef\fP iterator_traits< _Iterator >::iterator_category \fBstd::iterator\fP< iterator_traits< _Iterator >::iterator_category , iterator_traits< _Iterator >\fB::value_type\fP , iterator_traits< _Iterator >::difference_type , iterator_traits< _Iterator >::pointer , iterator_traits< _Iterator >::reference >::iterator_category\fC [inherited]\fP" .PP One of the \fBtag types\fP\&. .PP Definition at line \fB121\fP of file \fBstl_iterator_base_types\&.h\fP\&. .SS "template<\fBtypename\fP _Iterator > \fBtypedef\fP _Iterator \fBstd::reverse_iterator\fP< _Iterator >::iterator_type" .PP Definition at line \fB118\fP of file \fBbits/stl_iterator\&.h\fP\&. .SS "template<\fBtypename\fP _Iterator > \fBtypedef\fP __traits_type::pointer \fBstd::reverse_iterator\fP< _Iterator >::pointer" .PP Definition at line \fB120\fP of file \fBbits/stl_iterator\&.h\fP\&. .SS "template<\fBtypename\fP _Iterator > \fBtypedef\fP __traits_type::reference \fBstd::reverse_iterator\fP< _Iterator >::reference" .PP Definition at line \fB121\fP of file \fBbits/stl_iterator\&.h\fP\&. .SS "\fBtypedef\fP iterator_traits< _Iterator >::value_type \fBstd::iterator\fP< iterator_traits< _Iterator >\fB::iterator_category\fP , iterator_traits< _Iterator >::value_type , iterator_traits< _Iterator >::difference_type , iterator_traits< _Iterator >::pointer , iterator_traits< _Iterator >::reference >::value_type\fC [inherited]\fP" .PP The type 'pointed to' by the iterator\&. .PP Definition at line \fB123\fP of file \fBstl_iterator_base_types\&.h\fP\&. .SH "Constructor & Destructor Documentation" .PP .SS "template<\fBtypename\fP _Iterator > _GLIBCXX17_CONSTEXPR \fBstd::reverse_iterator\fP< _Iterator >::reverse_iterator ()\fC [inline]\fP" The default constructor value-initializes member \fCcurrent\fP\&. If it is a pointer, that means it is zero-initialized\&. .PP Definition at line \fB131\fP of file \fBbits/stl_iterator\&.h\fP\&. .PP Referenced by \fBstd::reverse_iterator< _Iterator >::operator+()\fP, and \fBstd::reverse_iterator< _Iterator >::operator\-()\fP\&. .SS "template<\fBtypename\fP _Iterator > _GLIBCXX17_CONSTEXPR \fBstd::reverse_iterator\fP< _Iterator >::reverse_iterator (iterator_type __x)\fC [inline]\fP, \fC [explicit]\fP" This iterator will move in the opposite direction that \fCx\fP does\&. .PP Definition at line \fB137\fP of file \fBbits/stl_iterator\&.h\fP\&. .SS "template<\fBtypename\fP _Iterator > _GLIBCXX17_CONSTEXPR \fBstd::reverse_iterator\fP< _Iterator >::reverse_iterator (\fBconst\fP \fBreverse_iterator\fP< _Iterator > & __x)\fC [inline]\fP" The copy constructor is normal\&. .PP Definition at line \fB143\fP of file \fBbits/stl_iterator\&.h\fP\&. .SS "template<\fBtypename\fP _Iterator > template<\fBtypename\fP _Iter > _GLIBCXX17_CONSTEXPR \fBstd::reverse_iterator\fP< _Iterator >::reverse_iterator (\fBconst\fP \fBreverse_iterator\fP< _Iter > & __x)\fC [inline]\fP" A reverse_iterator across other types can be copied if the underlying iterator can be converted to the type of \fCcurrent\fP\&. .PP Definition at line \fB156\fP of file \fBbits/stl_iterator\&.h\fP\&. .SH "Member Function Documentation" .PP .SS "template<\fBtypename\fP _Iterator > _GLIBCXX17_CONSTEXPR iterator_type \fBstd::reverse_iterator\fP< _Iterator >::base () const\fC [inline]\fP" .PP \fBReturns\fP .RS 4 \fCcurrent\fP, the iterator used for underlying work\&. .RE .PP .PP Definition at line \fB163\fP of file \fBbits/stl_iterator\&.h\fP\&. .SS "template<\fBtypename\fP _Iterator > _GLIBCXX17_CONSTEXPR reference \fBstd::reverse_iterator\fP< _Iterator >::operator* () const\fC [inline]\fP" .PP \fBReturns\fP .RS 4 A reference to the value at \fC--current\fP .RE .PP This requires that \fC--current\fP is dereferenceable\&. .PP \fBWarning\fP .RS 4 This implementation requires that for an iterator of the underlying iterator type, \fCx\fP, a reference obtained by \fC*x\fP remains valid after \fCx\fP has been modified or destroyed\&. This is a bug: http://gcc.gnu.org/PR51823 .RE .PP .PP Definition at line \fB177\fP of file \fBbits/stl_iterator\&.h\fP\&. .SS "template<\fBtypename\fP _Iterator > _GLIBCXX17_CONSTEXPR \fBreverse_iterator\fP \fBstd::reverse_iterator\fP< _Iterator >::operator+ (difference_type __n) const\fC [inline]\fP" .PP \fBReturns\fP .RS 4 A reverse_iterator that refers to \fCcurrent\fP - \fI__n\fP .RE .PP The underlying iterator must be a Random Access Iterator\&. .PP Definition at line \fB254\fP of file \fBbits/stl_iterator\&.h\fP\&. .PP References \fBstd::reverse_iterator< _Iterator >::reverse_iterator()\fP\&. .SS "template<\fBtypename\fP _Iterator > _GLIBCXX17_CONSTEXPR \fBreverse_iterator\fP & \fBstd::reverse_iterator\fP< _Iterator >::operator++ ()\fC [inline]\fP" .PP \fBReturns\fP .RS 4 \fC*this\fP .RE .PP Decrements the underlying iterator\&. .PP Definition at line \fB204\fP of file \fBbits/stl_iterator\&.h\fP\&. .SS "template<\fBtypename\fP _Iterator > _GLIBCXX17_CONSTEXPR \fBreverse_iterator\fP \fBstd::reverse_iterator\fP< _Iterator >::operator++ (int)\fC [inline]\fP" .PP \fBReturns\fP .RS 4 The original value of \fC*this\fP .RE .PP Decrements the underlying iterator\&. .PP Definition at line \fB216\fP of file \fBbits/stl_iterator\&.h\fP\&. .SS "template<\fBtypename\fP _Iterator > _GLIBCXX17_CONSTEXPR \fBreverse_iterator\fP & \fBstd::reverse_iterator\fP< _Iterator >::operator+= (difference_type __n)\fC [inline]\fP" .PP \fBReturns\fP .RS 4 *this .RE .PP Moves the underlying iterator backwards \fI__n\fP steps\&. The underlying iterator must be a Random Access Iterator\&. .PP Definition at line \fB264\fP of file \fBbits/stl_iterator\&.h\fP\&. .SS "template<\fBtypename\fP _Iterator > _GLIBCXX17_CONSTEXPR \fBreverse_iterator\fP \fBstd::reverse_iterator\fP< _Iterator >::operator\- (difference_type __n) const\fC [inline]\fP" .PP \fBReturns\fP .RS 4 A reverse_iterator that refers to \fCcurrent\fP - \fI__n\fP .RE .PP The underlying iterator must be a Random Access Iterator\&. .PP Definition at line \fB276\fP of file \fBbits/stl_iterator\&.h\fP\&. .PP References \fBstd::reverse_iterator< _Iterator >::reverse_iterator()\fP\&. .SS "template<\fBtypename\fP _Iterator > _GLIBCXX17_CONSTEXPR \fBreverse_iterator\fP & \fBstd::reverse_iterator\fP< _Iterator >::operator\-\- ()\fC [inline]\fP" .PP \fBReturns\fP .RS 4 \fC*this\fP .RE .PP Increments the underlying iterator\&. .PP Definition at line \fB229\fP of file \fBbits/stl_iterator\&.h\fP\&. .SS "template<\fBtypename\fP _Iterator > _GLIBCXX17_CONSTEXPR \fBreverse_iterator\fP \fBstd::reverse_iterator\fP< _Iterator >::operator\-\- (int)\fC [inline]\fP" .PP \fBReturns\fP .RS 4 A reverse_iterator with the previous value of \fC*this\fP .RE .PP Increments the underlying iterator\&. .PP Definition at line \fB241\fP of file \fBbits/stl_iterator\&.h\fP\&. .SS "template<\fBtypename\fP _Iterator > _GLIBCXX17_CONSTEXPR \fBreverse_iterator\fP & \fBstd::reverse_iterator\fP< _Iterator >::operator\-= (difference_type __n)\fC [inline]\fP" .PP \fBReturns\fP .RS 4 *this .RE .PP Moves the underlying iterator forwards \fI__n\fP steps\&. The underlying iterator must be a Random Access Iterator\&. .PP Definition at line \fB286\fP of file \fBbits/stl_iterator\&.h\fP\&. .SS "template<\fBtypename\fP _Iterator > _GLIBCXX17_CONSTEXPR pointer \fBstd::reverse_iterator\fP< _Iterator >::operator\-> () const\fC [inline]\fP" .PP \fBReturns\fP .RS 4 A pointer to the value at \fC--current\fP .RE .PP This requires that \fC--current\fP is dereferenceable\&. .PP Definition at line \fB189\fP of file \fBbits/stl_iterator\&.h\fP\&. .SS "template<\fBtypename\fP _Iterator > _GLIBCXX17_CONSTEXPR reference \fBstd::reverse_iterator\fP< _Iterator >::operator[] (difference_type __n) const\fC [inline]\fP" .PP \fBReturns\fP .RS 4 The value at \fCcurrent\fP - \fI__n\fP - 1 .RE .PP The underlying iterator must be a Random Access Iterator\&. .PP Definition at line \fB298\fP of file \fBbits/stl_iterator\&.h\fP\&. .SH "Member Data Documentation" .PP .SS "template<\fBtypename\fP _Iterator > _Iterator \fBstd::reverse_iterator\fP< _Iterator >::current\fC [protected]\fP" .PP Definition at line \fB113\fP of file \fBbits/stl_iterator\&.h\fP\&. .SH "Author" .PP Generated automatically by Doxygen for libstdc++ from the source code\&.