iterator_traits man page on OpenIndiana

Man page or keyword search:  
man Server   20441 pages
apropos Keyword Search (all sections)
Output format
OpenIndiana logo
[printable version]

iterator_traits(3C++)		       -		 iterator_traits(3C++)

Standard C++ Library Copyright 1998, Rogue Wave Software, Inc.

NAME
       iterator_traits

	- Returns basic information about an iterator.

SYNOPSIS
       template <class Iterator> struct iterator_traits
       {
  typedef typename Iterator::value_type value_type;
  typedef typename Iterator::difference_type
			     difference_type;
  typedef typename Iterator::pointer pointer;
  typedef typename Iterator::reference reference;
  typedef typename Iterator::iterator_category
			     iterator_category;
};

// Specialization
template <;class T> struct iterator_traits<T*>
{
  typedef T value_type;
  typedef ptrdiff_t difference_type;
  typedef T* pointer;
  typedef T& reference;
  typedef random_access_iterator_tag iterator_category;
};

DESCRIPTION
       The_iterator_traits  template  and  specialization allows algorithms to
       access information about a particular iterator in a  uniform  way.  The
       template	 requires either an iterator with a basic interface consisting
       of the types value_type, difference_type, pointer, reference, and iter‐
       ator_category,  or  it  requires a specialization for the iterator. The
       library includes one specialization (partial)  to  handle  all  pointer
       iterator types.

       iterator_traits are used within algorithms to create local variables of
       either the type pointed to by the iterator or of	 the  iterator's  dis‐
       tance  type.  The  traits  also improve the efficiency of algorithms by
       making use of knowledge about basic iterator categories provided by the
       iterator_category member. An algorithm can use this "tag" to select the
       most efficient implementation an iterator is capable of handling	 with‐
       out  sacrificing	 the  ability  to  work	 with a wide range of iterator
       types. For instance, both the advance and distance primitives use iter‐
       ator_category  to  maximize their efficiency by using the tag to select
       from one of several different auxiliary functions.  The	iterator_cate‐
       gory  must  therefore  be  one  of  the	iterator  tags included by the
       library.

TAG TYPES
       input_iterator_tag
       output_iterator_tag
       forward_iterator_tag
       bidirectional_iterator_tag
       random_access_iterator_tag

       iterator_traits::iterator_category is typically used like this:

       template <class Iterator>
       void foo(Iterator first, Iterator last)
       {
 __foo(begin,end,
       iterator_traits<Iterator>::iterator_category);
}

template <;class Iterator>
void __foo(Iterator first, Iterator last,
	  input_iterator_tag>
{
  // Most general implementation
}

template <;class Iterator>
void __foo(Iterator first, Iterator last,
	  bidirectional_iterator_tag>
{
  // Implementation takes advantage of bi-directional
  // capability of the iterators
}

See the iterator section for a description of iterators and  the  capabilities
associated with each type of iterator tag.

WARNINGS
       If  your	 compiler  does	 not support partial specialization, then this
       template and specialization are not available to you. Instead you  need
       to use the __distance_type, __value_type, and __iterator_category fami‐
       lies of function templates. The Rogue Wave Standard  C++	 Library  also
       includes	 alternate implementations of the distance, advance, and count
       functions when partial specialization is not supported by a  particular
       compiler.

       If  your compiler does not support namespaces, then you do not need the
       using declaration for std.

SEE ALSO
       __value_type, __distance_type, __iterator_category, distance,  advance,
       iterator

Rogue Wave Software		  02 Apr 1998		 iterator_traits(3C++)
[top]

List of man pages available for OpenIndiana

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net