libstdc++
Iterators
Collaboration diagram for Iterators:

Modules

 Iterator Tags
 

Namespaces

 std::__detail
 

Classes

class  std::back_insert_iterator< _Container >
 
class  std::front_insert_iterator< _Container >
 
struct  std::input_iterator_tag
 
class  std::insert_iterator< _Container >
 
class  std::istream_iterator< _Tp, _CharT, _Traits, _Dist >
 
class  std::istreambuf_iterator< _CharT, _Traits >
 
struct  std::iterator< _Category, _Tp, _Distance, _Pointer, _Reference >
 
struct  std::iterator_traits< typename >
 
struct  std::iterator_traits< _Tp * >
 
struct  std::iterator_traits< const _Tp * >
 
class  std::move_iterator< _Iterator >
 
class  std::ostream_iterator< _Tp, _CharT, _Traits >
 
class  std::ostreambuf_iterator< _CharT, _Traits >
 
class  std::reverse_iterator< _Iterator >
 

Macros

#define __cpp_lib_make_reverse_iterator
 

Functions

template<bool _IsMove, typename _CharT >
__gnu_cxx::__enable_if
< __is_char< _CharT >::__value,
ostreambuf_iterator< _CharT >
>::__type 
std::__copy_move_a2 (_CharT *__first, _CharT *__last, ostreambuf_iterator< _CharT > __result)
 
template<bool _IsMove, typename _CharT >
__gnu_cxx::__enable_if
< __is_char< _CharT >::__value,
ostreambuf_iterator< _CharT >
>::__type 
std::__copy_move_a2 (const _CharT *__first, const _CharT *__last, ostreambuf_iterator< _CharT > __result)
 
template<bool _IsMove, typename _CharT >
__gnu_cxx::__enable_if
< __is_char< _CharT >::__value,
_CharT * >::__type 
std::__copy_move_a2 (istreambuf_iterator< _CharT > __first, istreambuf_iterator< _CharT > __last, _CharT *__result)
 
template<typename _CharT , typename _Size >
__gnu_cxx::__enable_if
< __is_char< _CharT >::__value,
_CharT * >::__type 
std::__copy_n_a (istreambuf_iterator< _CharT > __it, _Size __n, _CharT *__result, bool __strict)
 
template<typename _Iter >
constexpr iterator_traits
< _Iter >::iterator_category 
std::__iterator_category (const _Iter &)
 
template<typename _Iterator , typename _ReturnType = typename conditional<__move_if_noexcept_cond <typename iterator_traits<_Iterator>::value_type>::value, _Iterator, move_iterator<_Iterator>>::type>
constexpr _ReturnType std::__make_move_if_noexcept_iterator (_Iterator __i)
 
template<typename _Tp , typename _ReturnType = typename conditional<__move_if_noexcept_cond<_Tp>::value, const _Tp*, move_iterator<_Tp*>>::type>
constexpr _ReturnType std::__make_move_if_noexcept_iterator (_Tp *__i)
 
template<typename _Iterator >
constexpr reverse_iterator
< _Iterator > 
std::__make_reverse_iterator (_Iterator __i)
 
template<typename _CharT , typename _Distance >
__gnu_cxx::__enable_if
< __is_char< _CharT >::__value,
void >::__type 
std::advance (istreambuf_iterator< _CharT > &__i, _Distance __n)
 
template<typename _Container >
constexpr back_insert_iterator
< _Container > 
std::back_inserter (_Container &__x)
 
template<typename _CharT >
__gnu_cxx::__enable_if
< __is_char< _CharT >::__value,
ostreambuf_iterator< _CharT >
>::__type 
std::copy (istreambuf_iterator< _CharT > __first, istreambuf_iterator< _CharT > __last, ostreambuf_iterator< _CharT > __result)
 
template<typename _CharT >
__gnu_cxx::__enable_if
< __is_char< _CharT >::__value,
istreambuf_iterator< _CharT >
>::__type 
std::find (istreambuf_iterator< _CharT > __first, istreambuf_iterator< _CharT > __last, const _CharT &__val)
 
template<typename _Container >
constexpr
front_insert_iterator
< _Container > 
std::front_inserter (_Container &__x)
 
template<typename _Container >
insert_iterator< _Container > std::inserter (_Container &__x, typename _Container::iterator __i)
 
template<typename _Iterator >
constexpr move_iterator
< _Iterator > 
std::make_move_iterator (_Iterator __i)
 
template<typename _Iterator >
constexpr reverse_iterator
< _Iterator > 
std::make_reverse_iterator (_Iterator __i)
 
template<typename _CharT , typename _Traits >
bool std::operator!= (const istreambuf_iterator< _CharT, _Traits > &__a, const istreambuf_iterator< _CharT, _Traits > &__b)
 
template<typename _Iterator >
constexpr bool std::operator!= (const reverse_iterator< _Iterator > &__x, const reverse_iterator< _Iterator > &__y)
 
template<typename _IteratorL , typename _IteratorR >
constexpr bool std::operator!= (const reverse_iterator< _IteratorL > &__x, const reverse_iterator< _IteratorR > &__y)
 
template<typename _IteratorL , typename _IteratorR >
constexpr bool std::operator!= (const move_iterator< _IteratorL > &__x, const move_iterator< _IteratorR > &__y)
 
template<typename _Iterator >
constexpr bool std::operator!= (const move_iterator< _Iterator > &__x, const move_iterator< _Iterator > &__y)
 
template<typename _Iterator >
constexpr reverse_iterator
< _Iterator > 
std::operator+ (typename reverse_iterator< _Iterator >::difference_type __n, const reverse_iterator< _Iterator > &__x)
 
template<typename _Iterator >
constexpr move_iterator
< _Iterator > 
std::operator+ (typename move_iterator< _Iterator >::difference_type __n, const move_iterator< _Iterator > &__x)
 
template<typename _IteratorL , typename _IteratorR >
constexpr auto std::operator- (const reverse_iterator< _IteratorL > &__x, const reverse_iterator< _IteratorR > &__y) -> decltype(__y.base()-__x.base())
 
template<typename _IteratorL , typename _IteratorR >
constexpr auto std::operator- (const move_iterator< _IteratorL > &__x, const move_iterator< _IteratorR > &__y) -> decltype(__x.base()-__y.base())
 
template<typename _Iterator >
constexpr bool std::operator< (const reverse_iterator< _Iterator > &__x, const reverse_iterator< _Iterator > &__y)
 
template<typename _IteratorL , typename _IteratorR >
constexpr bool std::operator< (const reverse_iterator< _IteratorL > &__x, const reverse_iterator< _IteratorR > &__y)
 
template<typename _IteratorL , typename _IteratorR >
constexpr bool std::operator< (const move_iterator< _IteratorL > &__x, const move_iterator< _IteratorR > &__y)
 
template<typename _Iterator >
constexpr bool std::operator< (const move_iterator< _Iterator > &__x, const move_iterator< _Iterator > &__y)
 
template<typename _Iterator >
constexpr bool std::operator<= (const reverse_iterator< _Iterator > &__x, const reverse_iterator< _Iterator > &__y)
 
template<typename _IteratorL , typename _IteratorR >
constexpr bool std::operator<= (const reverse_iterator< _IteratorL > &__x, const reverse_iterator< _IteratorR > &__y)
 
template<typename _IteratorL , typename _IteratorR >
constexpr bool std::operator<= (const move_iterator< _IteratorL > &__x, const move_iterator< _IteratorR > &__y)
 
template<typename _Iterator >
constexpr bool std::operator<= (const move_iterator< _Iterator > &__x, const move_iterator< _Iterator > &__y)
 
template<typename _CharT , typename _Traits >
bool std::operator== (const istreambuf_iterator< _CharT, _Traits > &__a, const istreambuf_iterator< _CharT, _Traits > &__b)
 
template<typename _Iterator >
constexpr bool std::operator== (const reverse_iterator< _Iterator > &__x, const reverse_iterator< _Iterator > &__y)
 
template<typename _IteratorL , typename _IteratorR >
constexpr bool std::operator== (const reverse_iterator< _IteratorL > &__x, const reverse_iterator< _IteratorR > &__y)
 
template<typename _IteratorL , typename _IteratorR >
constexpr bool std::operator== (const move_iterator< _IteratorL > &__x, const move_iterator< _IteratorR > &__y)
 
template<typename _Iterator >
constexpr bool std::operator== (const move_iterator< _Iterator > &__x, const move_iterator< _Iterator > &__y)
 
template<typename _Iterator >
constexpr bool std::operator> (const reverse_iterator< _Iterator > &__x, const reverse_iterator< _Iterator > &__y)
 
template<typename _IteratorL , typename _IteratorR >
constexpr bool std::operator> (const reverse_iterator< _IteratorL > &__x, const reverse_iterator< _IteratorR > &__y)
 
template<typename _IteratorL , typename _IteratorR >
constexpr bool std::operator> (const move_iterator< _IteratorL > &__x, const move_iterator< _IteratorR > &__y)
 
template<typename _Iterator >
constexpr bool std::operator> (const move_iterator< _Iterator > &__x, const move_iterator< _Iterator > &__y)
 
template<typename _Iterator >
constexpr bool std::operator>= (const reverse_iterator< _Iterator > &__x, const reverse_iterator< _Iterator > &__y)
 
template<typename _IteratorL , typename _IteratorR >
constexpr bool std::operator>= (const reverse_iterator< _IteratorL > &__x, const reverse_iterator< _IteratorR > &__y)
 
template<typename _IteratorL , typename _IteratorR >
constexpr bool std::operator>= (const move_iterator< _IteratorL > &__x, const move_iterator< _IteratorR > &__y)
 
template<typename _Iterator >
constexpr bool std::operator>= (const move_iterator< _Iterator > &__x, const move_iterator< _Iterator > &__y)
 

Variables

template<typename _Iterator >
constexprdecltype(__make_reverse_iterator(__niter_base(__it.base()))) std::auto
 

Detailed Description

Abstractions for uniform iterating through various underlying types.

Function Documentation

template<typename _Iter >
constexpr iterator_traits<_Iter>::iterator_category std::__iterator_category ( const _Iter &  )
inline
template<typename _Container >
constexpr back_insert_iterator<_Container> std::back_inserter ( _Container &  __x)
inline
Parameters
__xA container of arbitrary type.
Returns
An instance of back_insert_iterator working on __x.

This wrapper function helps in creating back_insert_iterator instances. Typing the name of the iterator requires knowing the precise full type of the container, which can be tedious and impedes generic programming. Using this function lets you take advantage of automatic template parameter deduction, making the compiler match the correct types for you.

Definition at line 720 of file bits/stl_iterator.h.

Referenced by std::match_results< _Bi_iter >::format(), and std::regex_replace().

template<typename _Container >
constexpr front_insert_iterator<_Container> std::front_inserter ( _Container &  __x)
inline
Parameters
__xA container of arbitrary type.
Returns
An instance of front_insert_iterator working on x.

This wrapper function helps in creating front_insert_iterator instances. Typing the name of the iterator requires knowing the precise full type of the container, which can be tedious and impedes generic programming. Using this function lets you take advantage of automatic template parameter deduction, making the compiler match the correct types for you.

Definition at line 823 of file bits/stl_iterator.h.

template<typename _Container >
insert_iterator<_Container> std::inserter ( _Container &  __x,
typename _Container::iterator  __i 
)
inline
Parameters
__xA container of arbitrary type.
__iAn iterator into the container.
Returns
An instance of insert_iterator working on __x.

This wrapper function helps in creating insert_iterator instances. Typing the name of the iterator requires knowing the precise full type of the container, which can be tedious and impedes generic programming. Using this function lets you take advantage of automatic template parameter deduction, making the compiler match the correct types for you.

Definition at line 966 of file bits/stl_iterator.h.

template<typename _Iterator >
constexpr reverse_iterator<_Iterator> std::make_reverse_iterator ( _Iterator  __i)
inline

Generator function for reverse_iterator.

Definition at line 587 of file bits/stl_iterator.h.

template<typename _Iterator >
constexpr bool std::operator== ( const reverse_iterator< _Iterator > &  __x,
const reverse_iterator< _Iterator > &  __y 
)
inline
Parameters
__xA reverse_iterator.
__yA reverse_iterator.
Returns
A simple bool.

Reverse iterators forward comparisons to their underlying base() iterators.

Definition at line 419 of file bits/stl_iterator.h.

References std::reverse_iterator< _Iterator >::base().