File: p_queue.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 (104 lines) | stat: -rw-r--r-- 4,845 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
<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>mfd/p_queue.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>priority_queue&lt;T, Cont, Comp&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 &quot;boost/p_queue.hpp&quot;

template &lt;class T,
          class Cont = std::vector&lt;T&gt;,
          class Comp = std::less&lt;typename Cont::value_type&gt; &gt;
class boost::priority_queue
{
public:
  typedef typename Cont::value_type      <A HREF="heap-common.html#value_type">value_type</A>;
  typedef typename Cont::size_type       <A HREF="heap-common.html#size_type">size_type</A>;
  typedef          Cont                  container_type;
  typedef typename Cont::reference       reference;
  typedef typename Cont::const_reference <A HREF="heap-common.html#const_reference">const_reference</A>;

  typedef typename Cont::iterator        iterator;
  typedef typename Cont::const_iterator  <A HREF="heap-common.html#const_iterator">const_iterator</A>;

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

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

  void <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#change_top">change_top</A>(const_reference val);

  const_iterator <A HREF="heap-common.html#begin">begin</A>() const;
  const_iterator <A HREF="heap-common.html#end">end</A>() const;
};
    </PRE></TD></TABLE>

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

    The template class <nobr><tt>priority_queue</tt></nobr> is a replacement for the standard template
    class <nobr><tt>std::priority_queue</tt></nobr>. It has a slightly extended interface, namely the
    methods <nobr><tt><A HREF="heap-common.html#begin">begin</A>()</tt></nobr> and
    <nobr><tt><A HREF="heap-common.html#begin">end</A>()</tt></nobr> to get access to all elements
currently
    stored in the priority queue and the method 
    <nobr><tt><A HREF="heap-common.html#begin">change_top</A>()</tt></nobr> which is used for efficient
    modification of the largest element's priority.

    <P>


    The basic method to maintain the internal data structure is identical to that
    of <A HREF="d_heap.html">d-heaps</A> but for <nobr><tt>priority_queue</tt></nobr> the elements
    inserted into the priority queue are kept in the array. Thus, these are
    swapped. However, this removes the need to maintain a mapping between the
    elements in the heap and their position resulting a huge performance boost.
    On the other hand, this remove the possibility to change the priority of
    an arbitrary element because the elements cannot be found efficiently in the
    priority queue. If you never need to change the priority of an
    element except for the largest element this class is probably suitable.
    If you need only the methods also present for <nobr><tt>std::priority_queue</tt></nobr>
    you should probably stick to the standard class...

    <P>


    For a description of the methods of <nobr><tt>priority_queue&lt;T, Cont, Comp&gt;</tt></nobr> see the
    description of <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>
</TD></TR></TABLE>
</BODY></HTML>