<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html
          PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
   <meta name="AUTHOR" content="pme@gcc.gnu.org (Phil Edwards)" />
   <meta name="KEYWORDS" content="HOWTO, libstdc++, GCC, g++, libg++, STL" />
   <meta name="DESCRIPTION" content="HOWTO for the libstdc++ chapter 24." />
   <meta name="GENERATOR" content="vi and eight fingers" />
   <title>libstdc++-v3 HOWTO:  Chapter 24: Iterators</title>
<link rel="StyleSheet" href="../lib3styles.css" type="text/css" />
<link rel="Start" href="../documentation.html" type="text/html"
  title="GNU C++ Standard Library" />
<link rel="Prev" href="../23_containers/howto.html" type="text/html"
  title="Containers" />
<link rel="Next" href="../25_algorithms/howto.html" type="text/html"
  title="Algorithms" />
<link rel="Copyright" href="../17_intro/license.html" type="text/html" />
<link rel="Help" href="../faq/index.html" type="text/html" title="F.A.Q." />
</head>
<body>

<h1 class="centered"><a name="top">Chapter 24:  Iterators</a></h1>

<p>Chapter 24 deals with the FORTRAN subroutines for automatically
   transforming lemmings into gold.
</p>


<!-- ####################################################### -->
<hr />
<h1>Contents</h1>
<ul>
   <li><a href="#1">They ain't pointers!</a></li>
   <li><a href="#2">It ends <em>where?</em></a></li>
</ul>

<hr />

<!-- ####################################################### -->

<h2><a name="1">They ain't pointers!</a></h2>
   <p><a href="../faq/index.html#5_1">FAQ 5.1</a> points out that iterators
      are not implemented as pointers.  They are a generalization of
      pointers, but they are implemented in libstdc++-v3 as separate classes.
   </p>
   <p>Keeping that simple fact in mind as you design your code will
      prevent a whole lot of difficult-to-understand bugs.
   </p>
   <p>You can think of it the other way 'round, even.  Since iterators
      are a generalization, that means that <em>pointers</em> are
      <em>iterators</em>, and that pointers can be used whenever an
      iterator would be.  All those functions in the Algorithms chapter
      of the Standard will work just as well on plain arrays and their
      pointers.
   </p>
   <p>That doesn't mean that when you pass in a pointer, it gets wrapped
      into some special delegating iterator-to-pointer class with a layer
      of overhead.  (If you think that's the case anywhere, you don't
      understand templates to begin with...)  Oh, no; if you pass
      in a pointer, then the compiler will instantiate that template
      using T* as a type, and good old high-speed pointer arithmetic as
      its operations, so the resulting code will be doing exactly the same
      things as it would be doing if you had hand-coded it yourself (for
      the 273rd time).
   </p>
   <p>How much overhead <em>is</em> there when using an iterator class?
      Very little.  Most of the layering classes contain nothing but
      typedefs, and typedefs are &quot;meta-information&quot; that simply
      tell the compiler some nicknames; they don't create code.  That
      information gets passed down through inheritance, so while the
      compiler has to do work looking up all the names, your runtime code
      does not.  (This has been a prime concern from the beginning.)
   </p>
   <p>Return <a href="#top">to top of page</a> or
      <a href="../faq/index.html">to the FAQ</a>.
   </p>

<hr />
<h2><a name="2">It ends <em>where?</em></a></h2>
   <p>This starts off sounding complicated, but is actually very easy,
      especially towards the end.  Trust me.
   </p>
   <p>Beginners usually have a little trouble understand the whole
      'past-the-end' thing, until they remember their early algebra classes
      (see, they <em>told</em> you that stuff would come in handy!) and
      the concept of half-open ranges.
   </p>
   <p>First, some history, and a reminder of some of the funkier rules in
      C and C++ for builtin arrays.  The following rules have always been
      true for both languages:
   </p>
   <ol>
      <li>You can point anywhere in the array, <em>or to the first element
          past the end of the array</em>.  A pointer that points to one
          past the end of the array is guaranteed to be as unique as a
          pointer to somewhere inside the array, so that you can compare
          such pointers safely.
      </li>
      <li>You can only dereference a pointer that points into an array.
          If your array pointer points outside the array -- even to just
          one past the end -- and you dereference it, Bad Things happen.
      </li>
      <li>Strictly speaking, simply pointing anywhere else invokes
          undefined behavior.  Most programs won't puke until such a
          pointer is actually dereferenced, but the standards leave that
          up to the platform.
      </li>
   </ol>
   <p>The reason this past-the-end addressing was allowed is to make it
      easy to write a loop to go over an entire array, e.g.,
      while (*d++ = *s++);.
   </p>
   <p>So, when you think of two pointers delimiting an array, don't think
      of them as indexing 0 through n-1.  Think of them as <em>boundary
      markers</em>:
   </p>
   <pre>

   beginning            end
     |                   |
     |                   |               This is bad.  Always having to
     |                   |               remember to add or subtract one.
     |                   |               Off-by-one bugs very common here.
     V                   V
        array of N elements
     |---|---|--...--|---|---|
     | 0 | 1 |  ...  |N-2|N-1|
     |---|---|--...--|---|---|

     ^                       ^
     |                       |
     |                       |           This is good.  This is safe.  This
     |                       |           is guaranteed to work.  Just don't
     |                       |           dereference 'end'.
   beginning                end

   </pre>
   <p>See?  Everything between the boundary markers is part of the array.
      Simple.
   </p>
   <p>Now think back to your junior-high school algebra course, when you
      were learning how to draw graphs.  Remember that a graph terminating
      with a solid dot meant, &quot;Everything up through this point,&quot;
      and a graph terminating with an open dot meant, &quot;Everything up
      to, but not including, this point,&quot; respectively called closed
      and open ranges?  Remember how closed ranges were written with
      brackets, <em>[a,b]</em>, and open ranges were written with parentheses,
      <em>(a,b)</em>?
   </p>
   <p>The boundary markers for arrays describe a <em>half-open range</em>,
      starting with (and including) the first element, and ending with (but
      not including) the last element:  <em>[beginning,end)</em>.  See, I
      told you it would be simple in the end.
   </p>
   <p>Iterators, and everything working with iterators, follows this same
      time-honored tradition.  A container's <code>begin()</code> method returns
      an iterator referring to the first element, and its <code>end()</code>
      method returns a past-the-end iterator, which is guaranteed to be
      unique and comparable against any other iterator pointing into the
      middle of the container.
   </p>
   <p>Container constructors, container methods, and algorithms, all take
      pairs of iterators describing a range of values on which to operate.
      All of these ranges are half-open ranges, so you pass the beginning
      iterator as the starting parameter, and the one-past-the-end iterator
      as the finishing parameter.
   </p>
   <p>This generalizes very well.  You can operate on sub-ranges quite
      easily this way; functions accepting a <em>[first,last)</em> range
      don't know or care whether they are the boundaries of an entire {array,
      sequence, container, whatever}, or whether they only enclose a few
      elements from the center.  This approach also makes zero-length
      sequences very simple to recognize:  if the two endpoints compare
      equal, then the {array, sequence, container, whatever} is empty.
   </p>
   <p>Just don't dereference <code>end()</code>.
   </p>
   <p>Return <a href="#top">to top of page</a> or
      <a href="../faq/index.html">to the FAQ</a>.
   </p>




<!-- ####################################################### -->

<hr />
<p class="fineprint"><em>
See <a href="../17_intro/license.html">license.html</a> for copying conditions.
Comments and suggestions are welcome, and may be sent to
<a href="mailto:libstdc++@gcc.gnu.org">the libstdc++ mailing list</a>.
</em></p>


</body>
</html>
