aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/docs/html/25_algorithms/howto.html
blob: c161b1871a3f92293885d31dd1005f9707cfbb1e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
   <META NAME="AUTHOR" CONTENT="pme@sources.redhat.com (Phil Edwards)">
   <META NAME="KEYWORDS" CONTENT="HOWTO, libstdc++, GCC, g++, libg++, STL">
   <META NAME="DESCRIPTION" CONTENT="HOWTO for the libstdc++ chapter 25.">
   <META NAME="GENERATOR" CONTENT="vi and eight fingers">
   <TITLE>libstdc++-v3 HOWTO:  Chapter 25</TITLE>
<LINK REL=StyleSheet HREF="../lib3styles.css">
<!-- $Id: howto.html,v 1.5 2000/12/03 23:47:48 jsm28 Exp $ -->
</HEAD>
<BODY>

<H1 CLASS="centered"><A NAME="top">Chapter 25:  Algorithms</A></H1>

<P>Chapter 25 deals with the generalized subroutines for automatically
   transforming lemmings into gold.
</P>


<!-- ####################################################### -->
<HR>
<H1>Contents</H1>
<UL>
   <LI><A HREF="#1">Prerequisites</A>
   <LI><A HREF="#2">Topic</A>
</UL>

<HR>

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

<H2><A NAME="1">Prerequisites</A></H2>
   <P>The neatest accomplishment of the algorithms chapter is that all the
      work is done via iterators, not containers directly.  This means two
      important things:
      <OL>
        <LI>Anything that behaves like an iterator can be used in one of
	    these algorithms.  Raw pointers make great candidates, thus
	    built-in arrays are fine containers.  So do your own iterators.
        <LI>The algorithms do not (and cannot) affect the container as a
	    whole; only the things between the two iterator endpoints.  If
	    you pass a range of iterators only enclosing the middle third of
	    a container, then anything outside that range is inviolate.
      </OL>
   </P>
   <P>Even strings can be fed through the algorithms here, although the
      string class has specialized versions of many of these functions (for
      example, <TT>string::find()</TT>).  Most of the examples on this
      page will use simple arrays of integers as a playground for
      algorithms, just to keep things simple.
      <A NAME="Nsize">The use of <B>N</B></A> as a size in the examples is
      to keep things easy to read but probably won't be legal code.  You can
      use wrappers such as those described in the
      <A HREF="../23_containers/howto.html">containers chapter</A> to keep
      real code readable.
   </P>
   <P>The single thing that trips people up the most is the definition of 
      <EM>range</EM> used with iterators; the famous
      &quot;past-the-end&quot; rule that everybody loves to hate.  The
      <A HREF="../24_iterators/howto.html">iterators chapter</A> of this
      document has a complete explanation of this simple rule that seems to
      cause so much confusion.  Once you get <EM>range</EM> into your head
      (it's not that hard, honest!), then the algorithms are a cakewalk.
   </P>
   <P>
   </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">Topic</A></H2>
   <P>Blah.
   </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>
Comments and suggestions are welcome, and may be sent to
<A HREF="mailto:pme@sources.redhat.com">Phil Edwards</A> or
<A HREF="mailto:gdr@gcc.gnu.org">Gabriel Dos Reis</A>.
<BR> $Id: howto.html,v 1.5 2000/12/03 23:47:48 jsm28 Exp $
</EM></P>


</BODY>
</HTML>