File: d_heap.html

package info (click to toggle)
boost 1.27.0-3
  • links: PTS
  • area: main
  • in suites: woody
  • size: 19,908 kB
  • ctags: 26,546
  • sloc: cpp: 122,225; ansic: 10,956; python: 4,412; sh: 855; yacc: 803; makefile: 257; perl: 165; lex: 90; csh: 6
file content (129 lines) | stat: -rw-r--r-- 5,830 bytes parent folder | download
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<HTML><HEAD>
<!!---------------------------------------------------------------------->
<!! Copyright (C) 1999 Dietmar Kuehl, Claas Solutions GmbH >
<!!>
<!! Permission to use, copy, modify, distribute and sell this >
<!! software for any purpose is hereby granted without fee, provided >
<!! that the above copyright notice appears in all copies and that >
<!! both that copyright notice and this permission notice appear in >
<!! supporting documentation. Dietmar Kuehl and Claas Solutions make no >
<!! representations about the suitability of this software for any >
<!! purpose. It is provided "as is" without express or implied warranty. >
<!!---------------------------------------------------------------------->
<TITLE>d_heap.3</TITLE>
</HEAD>
<BODY BGCOLOR=white LINK="0000FF" VLINK="800080">
<IMG SRC=../../c++boost.gif ALIGN=TOP WIDTH=277 HEIGHT=86><BR>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 COLS=2>
<TR><TD WIDTH=109 VALIGN=TOP><IMG SRC=sidebar.jpg WIDTH=109 HEIGHT=494>
</TD><TD>
<SPACER TYPE=VERTICAL SIZE=40>
<H1> Template Class <nobr><tt>d_heap&lt;T, Comp, d&gt;</tt></nobr></H1>

  <A NAME="Synopsis"><H1>Synopsis</H1></A>

    <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 COLS=2>
<TR><TD WIDTH=30 VALIGN=TOP></TD><TD>
<PRE>
#include "boost/d_heap.hpp"

template &lt;typename T&gt;
class boost::d_heap_base
{
public:
  class const_iterator
  {
  public:
    const_iterator();

    T const&        operator* () const;
    T const*        operator-&gt; () const;
    const_iterator& operator++ ();
    const_iterator  operator++ (int);

    bool operator== (const_iterator const& it) const;
    bool operator!= (const_iterator const& it) const;
  };

  d_heap_base();
  const_reference <A HREF="heap-common.html#top">top</A>() const;
  bool            <A HREF="heap-common.html#empty">empty</A>() const;
  size_type       <A HREF="heap-common.html#size">size</A>() const;
  const_iterator  <A HREF="heap-common.html#begin">begin</A>() const;
  const_iterator  <A HREF="heap-common.html#end">end</A>() const;

protected:
  ~d_heap_base();
};

template &lt;typename T, typename Comp = std::less&lt;T&gt;, int d = 2&gt;
class boost::d_heap: public boost::d_heap_base&lt;T&gt;
{
public:
  typedef T                                   <A HREF="heap-common.html#value_type">value_type</A>;
  typedef T&                                  reference;
  typedef T const&                            <A HREF="heap-common.html#const_reference">const_reference</A>;
  typedef typename d_heap&lt;T&gt;::const_iterator  <A HREF="heap-common.html#const_iterator">const_iterator</A>;
  typedef typename std::list&lt;node&gt;::size_type <A HREF="heap-common.html#size_type">size_type</A>;
  typedef Comp                                <A HREF="heap-common.html#compare_type">compare_type</A>;

  explicit <A HREF="heap-common.html#default-ctor">d_heap</A>(Comp const& comp = Comp());

  pointer <A HREF="heap-common.html#push">push</A>(const_reference val);
  void    <A HREF="heap-common.html#pop">pop</A>();
  void    <A HREF="heap-common.html#remove">remove</A>(pointer ptr);

  template &lt;typename K&gt; void <A HREF="heap-common.html#change_top">change_top</A>(K const& val);
  template &lt;typename K&gt; void <A HREF="heap-common.html#change">change</A>(pointer ptr, K const& val
  template &lt;typename K&gt; void <A HREF="heap-common.html#decrease">decrease</A>(pointer ptr, K const& val);
  template &lt;typename K&gt; void <A HREF="heap-common.html#increase">increase</A>(pointer ptr, K const& val);
};
    </PRE></TD></TABLE>

  
  <A NAME="Description"><H1>Description</H1></A>

    The class <nobr><tt>d_heap&lt;T, Comp, d&gt;</tt></nobr> represents the heap as a
    balanced d-ary tree. Normally <nobr><tt>d == 2</tt></nobr> is used in which case
    a binary tree is used to represent the heap. Internally, the tree is
    represented as an array and the navigation in the tree is made using
    simple index calculations. The type of objects stored in the heap is
    <nobr><tt>T</tt></nobr> which are compared using the comparator type <nobr><tt>Comp</tt></nobr>.
    During the heap manipulations the invariant is temporarily violated
    and then restored by swapping the violating node appropriately with
    its parent or its largest child depending on the whether the node has
    to travel up or down, respectively. Note, that the swapped objects
    are just pointers to the actual elements. Thus, even if copying and/or
    assigning objects of type <nobr><tt>T</tt></nobr> is a relatively expensive operation,
    the swaps performed to maintain the invariant are not.

    <P>


    The class <nobr><tt>d_heap_base&lt;T&gt;</tt></nobr> is used to factor out all portions
    of the code which are independent from the compare type and the
    number of child nodes. This class is intended to be used only by
    <nobr><tt>d_heap&lt;T, Comp, d&gt;</tt></nobr> and is not intended to be used as generally
    useful base class. Of course, you can use all public members defined
    for <nobr><tt>d_heap_base&lt;T&gt;</tt></nobr> on <nobr><tt>d_heap&lt;T, Comp, d&gt;</tt></nobr> objects.
	
    <P>


    For a description of the methods of <nobr><tt>d_heap&lt;T, Comp, d&gt;</tt></nobr> please
    refer to the general description on the page describing <A HREF="heap.html">heaps</A>
    and the page describing the <A HREF="heap-common.html">common methods</A>.
  
  <A NAME="See Also"><H1>See Also</H1></A>

    <A HREF="heap.html">heap(3)</A>
    <A HREF="heap-common.html">heap-common(3)</A>
  
<HR>

Copyright &copy 1999 <A HREF=http://www.claas-solutions.de/kuehl>Dietmar K&uuml;hl</A> (<A HREF="mailto:dietmar.kuehl@claas-solutions.de">dietmar.kuehl@claas-solutions.de</A>)<BR>
<a href="http://www.claas-solutions.de/">Claas Solutions GmbH</a>
</FONT></FONT>
</TD></TR></TABLE>
</BODY></HTML>