ADC Home > Reference Library > Reference > Darwin > Miscellaneous User Space API Reference

 


stl_iterator_base_types.h

Introduction

This is an internal header file, included by other library headers. You should not attempt to use it directly.

This file contains all of the general iterator-related utility types, such as iterator_traits and struct iterator.



Functions

__iterator_category

__iterator_category


template<typename _Iter> inline typename iterator_traits<_Iter>::iterator_category __iterator_category(
    const _Iter&) 
Discussion

@if maint This function is not a part of the C++ standard but is syntactic sugar for internal library use only. @endif

Typedefs


iterator


template<typename _Category, typename _Tp, typename _Distance = 
    ptrdiff_t, typename _Pointer = _Tp*, typename _Reference = _Tp&> struct iterator { 
    /// One of the @link iterator_tags tag types@endlink. 
    typedef _Category iterator_category; 
    /// The type "pointed to" by the iterator. 
    typedef _Tp value_type; 
    /// Distance between iterators is represented as this type. 
    typedef _Distance difference_type; 
    /// This type represents a pointer-to-value_type. 
    typedef _Pointer pointer; 
    /// This type represents a reference-to-value_type. 
    typedef _Reference reference; 
};  
Discussion

@brief Common %iterator class.

This class does nothing but define nested typedefs. %Iterator classes can inherit from this class to save some work. The typedefs are then used in specializations and overloading.

In particular, there are no default implementations of requirements such as @c operator++ and the like. (How could there be?)


iterator_traits


template<typename _Iterator> struct iterator_traits { 
    typedef typename _Iterator::iterator_category iterator_category; 
    typedef typename _Iterator::value_type value_type; 
    typedef typename _Iterator::difference_type difference_type; 
    typedef typename _Iterator::pointer pointer; 
    typedef typename _Iterator::reference reference; 
};  
Discussion

This class does nothing but define nested typedefs. The general version simply "forwards" the nested typedefs from the Iterator argument. Specialized versions for pointers and pointers-to-const provide tighter, more correct semantics.

Structs and Unions


input_iterator_tag


/// Marking input iterators. 
struct input_iterator_tag {
};  
Discussion

@defgroup iterator_tags Iterator Tags These are empty types, used to distinguish different iterators. The distinction is not made by what they contain, but simply by what they are. Different underlying algorithms can then be used based on the different operations supporetd by different iterator types.

Last Updated: 2006-06-20