1<?xml version="1.0" standalone="yes"?> 2<library-reference><header name="boost/heap/binomial_heap.hpp"> 3<namespace name="boost"> 4<namespace name="heap"> 5<class name="binomial_heap"><template> 6 <template-type-parameter name="T"/> 7 <template-nontype-parameter name="Options"><type>class ...</type></template-nontype-parameter> 8 </template><purpose>binomial heap </purpose><description><para>The template parameter T is the type to be managed by the container. The user can specify additional options and if no options are provided default options are used.</para><para>The container supports the following options:<itemizedlist> 9<listitem><para><computeroutput>boost::heap::stable<></computeroutput>, defaults to <computeroutput>stable<false></computeroutput> </para> 10</listitem><listitem><para><computeroutput>boost::heap::compare<></computeroutput>, defaults to <computeroutput>compare<std::less<T></computeroutput> ></para> 11</listitem><listitem><para><computeroutput>boost::heap::allocator<></computeroutput>, defaults to <computeroutput>allocator<std::allocator<T></computeroutput> ></para> 12</listitem><listitem><para><computeroutput>boost::heap::constant_time_size<></computeroutput>, defaults to <computeroutput>constant_time_size<true></computeroutput> </para> 13</listitem><listitem><para><computeroutput>boost::heap::stability_counter_type<></computeroutput>, defaults to <computeroutput>stability_counter_type<boost::uintmax_t></computeroutput> </para> 14</listitem></itemizedlist> 15</para></description><typedef name="value_type"><type>T</type></typedef> 16<typedef name="size_type"><type>implementation_defined::size_type</type></typedef> 17<typedef name="difference_type"><type>implementation_defined::difference_type</type></typedef> 18<typedef name="value_compare"><type>implementation_defined::value_compare</type></typedef> 19<typedef name="allocator_type"><type>implementation_defined::allocator_type</type></typedef> 20<typedef name="reference"><type>implementation_defined::reference</type></typedef> 21<typedef name="const_reference"><type>implementation_defined::const_reference</type></typedef> 22<typedef name="pointer"><type>implementation_defined::pointer</type></typedef> 23<typedef name="const_pointer"><type>implementation_defined::const_pointer</type></typedef> 24<typedef name="iterator"><description><para><emphasis role="bold">Note:</emphasis> The iterator does not traverse the priority queue in order of the priorities. </para></description><type>implementation_defined::iterator</type></typedef> 25<typedef name="const_iterator"><type>implementation_defined::const_iterator</type></typedef> 26<typedef name="ordered_iterator"><type>implementation_defined::ordered_iterator</type></typedef> 27<typedef name="handle_type"><type>implementation_defined::handle_type</type></typedef> 28<data-member name="constant_time_size" specifiers="static"><type>const bool</type></data-member> 29<data-member name="has_ordered_iterators" specifiers="static"><type>const bool</type></data-member> 30<data-member name="is_mergable" specifiers="static"><type>const bool</type></data-member> 31<data-member name="is_stable" specifiers="static"><type>const bool</type></data-member> 32<data-member name="has_reserve" specifiers="static"><type>const bool</type></data-member> 33<method-group name="public member functions"> 34<method name="empty" cv="const"><type>bool</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns true, if the priority queue contains no elements.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 35<method name="size" cv="const"><type>size_type</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns the number of elements contained in the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant, if configured with constant_time_size<true>, otherwise linear. </para></description></method> 36<method name="max_size" cv="const"><type>size_type</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns the maximum number of elements the priority queue can contain.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 37<method name="clear"><type>void</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Removes all elements from the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Linear. </para></description></method> 38<method name="get_allocator" cv="const"><type>allocator_type</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns allocator.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 39<method name="swap"><type>void</type><parameter name="rhs"><paramtype><classname>binomial_heap</classname> &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Swaps two priority queues.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 40<method name="top" cv="const"><type>const_reference</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns a const_reference to the maximum element.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 41<method name="push"><type>handle_type</type><parameter name="v"><paramtype>value_type const &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Adds a new element to the priority queue. Returns handle to element</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic. </para></description></method> 42<method name="emplace"><type>handle_type</type><template> 43 <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter> 44 </template><parameter name="args"><paramtype>Args &&...</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Adds a new element to the priority queue. The element is directly constructed in-place. Returns handle to element.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic. </para></description></method> 45<method name="pop"><type>void</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Removes the top element from the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic. </para></description></method> 46<method name="update"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><parameter name="v"><paramtype>const_reference</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Assigns <computeroutput>v</computeroutput> to the element handled by <computeroutput>handle</computeroutput> & updates the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic. </para></description></method> 47<method name="update"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Updates the heap after the element handled by <computeroutput>handle</computeroutput> has been changed.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic.</para><para><emphasis role="bold">Note:</emphasis> If this is not called, after a handle has been updated, the behavior of the data structure is undefined! </para></description></method> 48<method name="increase"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><parameter name="v"><paramtype>const_reference</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Assigns <computeroutput>v</computeroutput> to the element handled by <computeroutput>handle</computeroutput> & updates the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic.</para><para><emphasis role="bold">Note:</emphasis> The new value is expected to be greater than the current one </para></description></method> 49<method name="increase"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Updates the heap after the element handled by <computeroutput>handle</computeroutput> has been changed.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic.</para><para><emphasis role="bold">Note:</emphasis> If this is not called, after a handle has been updated, the behavior of the data structure is undefined! </para></description></method> 50<method name="decrease"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><parameter name="v"><paramtype>const_reference</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Assigns <computeroutput>v</computeroutput> to the element handled by <computeroutput>handle</computeroutput> & updates the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic.</para><para><emphasis role="bold">Note:</emphasis> The new value is expected to be less than the current one </para></description></method> 51<method name="decrease"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Updates the heap after the element handled by <computeroutput>handle</computeroutput> has been changed.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic.</para><para><emphasis role="bold">Note:</emphasis> The new value is expected to be less than the current one. If this is not called, after a handle has been updated, the behavior of the data structure is undefined! </para></description></method> 52<method name="merge"><type>void</type><parameter name="rhs"><paramtype><classname>binomial_heap</classname> &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Merge with priority queue rhs.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic. </para></description></method> 53<method name="begin" cv="const"><type>iterator</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns an iterator to the first element contained in the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 54<method name="end" cv="const"><type>iterator</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns an iterator to the end of the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 55<method name="ordered_begin" cv="const"><type>ordered_iterator</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns an ordered iterator to the first element contained in the priority queue.</para><para><emphasis role="bold">Note:</emphasis> Ordered iterators traverse the priority queue in heap order. </para></description></method> 56<method name="ordered_end" cv="const"><type>ordered_iterator</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns an ordered iterator to the end of the priority queue.</para><para><emphasis role="bold">Note:</emphasis> Ordered iterators traverse the priority queue in heap order. </para></description></method> 57<method name="erase"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Removes the element handled by <computeroutput>handle</computeroutput> from the <classname alt="boost::heap::priority_queue">priority_queue</classname>.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic. </para></description></method> 58<method name="value_comp" cv="const"><type>value_compare const &</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effect:</emphasis> Returns the value_compare object used by the priority queue </para></description></method> 59<method name="operator<" cv="const"><type>bool</type><template> 60 <template-type-parameter name="HeapType"/> 61 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><description><para><emphasis role="bold">Returns:</emphasis> Element-wise comparison of heap data structures</para><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 62<method name="operator>" cv="const"><type>bool</type><template> 63 <template-type-parameter name="HeapType"/> 64 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><description><para><emphasis role="bold">Returns:</emphasis> Element-wise comparison of heap data structures</para><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 65<method name="operator>=" cv="const"><type>bool</type><template> 66 <template-type-parameter name="HeapType"/> 67 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><description><para><emphasis role="bold">Returns:</emphasis> Element-wise comparison of heap data structures</para><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 68<method name="operator<=" cv="const"><type>bool</type><template> 69 <template-type-parameter name="HeapType"/> 70 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><description><para><emphasis role="bold">Returns:</emphasis> Element-wise comparison of heap data structures</para><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 71<method name="operator==" cv="const"><type>bool</type><template> 72 <template-type-parameter name="HeapType"/> 73 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><purpose>Equivalent comparison <emphasis role="bold">Returns:</emphasis> True, if both heap data structures are equivalent. </purpose><description><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 74<method name="operator!=" cv="const"><type>bool</type><template> 75 <template-type-parameter name="HeapType"/> 76 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><purpose>Equivalent comparison <emphasis role="bold">Returns:</emphasis> True, if both heap data structures are not equivalent. </purpose><description><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 77</method-group> 78<constructor specifiers="explicit"><parameter name="cmp"><paramtype>value_compare const &</paramtype><default>value_compare()</default></parameter><description><para><emphasis role="bold">Effects:</emphasis> constructs an empty priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></constructor> 79<constructor><parameter name="rhs"><paramtype><classname>binomial_heap</classname> const &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> copy-constructs priority queue from rhs.</para><para><emphasis role="bold">Complexity:</emphasis> Linear. </para></description></constructor> 80<copy-assignment><type><classname>binomial_heap</classname> &</type><parameter name="rhs"><paramtype><classname>binomial_heap</classname> const &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Assigns priority queue from rhs.</para><para><emphasis role="bold">Complexity:</emphasis> Linear. </para></description></copy-assignment> 81<constructor><parameter name="rhs"><paramtype><classname>binomial_heap</classname> &&</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> C++11-style move constructor.</para><para><emphasis role="bold">Complexity:</emphasis> Constant.</para><para><emphasis role="bold">Note:</emphasis> Only available, if BOOST_NO_CXX11_RVALUE_REFERENCES is not defined </para></description></constructor> 82<copy-assignment><type><classname>binomial_heap</classname> &</type><parameter name="rhs"><paramtype><classname>binomial_heap</classname> &&</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> C++11-style move assignment.</para><para><emphasis role="bold">Complexity:</emphasis> Constant.</para><para><emphasis role="bold">Note:</emphasis> Only available, if BOOST_NO_CXX11_RVALUE_REFERENCES is not defined </para></description></copy-assignment> 83<destructor><parameter name=""><paramtype>void</paramtype></parameter></destructor> 84<method-group name="public static functions"> 85<method name="s_handle_from_iterator" specifiers="static"><type>handle_type</type><parameter name="it"><paramtype>iterator const &</paramtype></parameter></method> 86</method-group> 87</class> 88</namespace> 89</namespace> 90</header> 91<header name="boost/heap/d_ary_heap.hpp"> 92<namespace name="boost"> 93<namespace name="heap"> 94<class name="d_ary_heap"><template> 95 <template-type-parameter name="T"/> 96 <template-nontype-parameter name="Options"><type>class ...</type></template-nontype-parameter> 97 </template><purpose>d-ary heap class </purpose><description><para>This class implements an immutable priority queue. Internally, the d-ary heap is represented as dynamically sized array (std::vector), that directly stores the values.</para><para>The template parameter T is the type to be managed by the container. The user can specify additional options and if no options are provided default options are used.</para><para>The container supports the following options:<itemizedlist> 98<listitem><para><computeroutput>boost::heap::arity<></computeroutput>, required</para> 99</listitem><listitem><para><computeroutput>boost::heap::compare<></computeroutput>, defaults to <computeroutput>compare<std::less<T></computeroutput> ></para> 100</listitem><listitem><para><computeroutput>boost::heap::stable<></computeroutput>, defaults to <computeroutput>stable<false></computeroutput> </para> 101</listitem><listitem><para><computeroutput>boost::heap::stability_counter_type<></computeroutput>, defaults to <computeroutput>stability_counter_type<boost::uintmax_t></computeroutput> </para> 102</listitem><listitem><para><computeroutput>boost::heap::allocator<></computeroutput>, defaults to <computeroutput>allocator<std::allocator<T></computeroutput> ></para> 103</listitem><listitem><para><computeroutput>boost::heap::mutable_<></computeroutput>, defaults to <computeroutput>mutable_<false></computeroutput> </para> 104</listitem></itemizedlist> 105</para></description><typedef name="value_type"><type>T</type></typedef> 106<typedef name="size_type"><type>implementation_defined::size_type</type></typedef> 107<typedef name="difference_type"><type>implementation_defined::difference_type</type></typedef> 108<typedef name="value_compare"><type>implementation_defined::value_compare</type></typedef> 109<typedef name="allocator_type"><type>implementation_defined::allocator_type</type></typedef> 110<typedef name="reference"><type>implementation_defined::reference</type></typedef> 111<typedef name="const_reference"><type>implementation_defined::const_reference</type></typedef> 112<typedef name="pointer"><type>implementation_defined::pointer</type></typedef> 113<typedef name="const_pointer"><type>implementation_defined::const_pointer</type></typedef> 114<typedef name="iterator"><description><para><emphasis role="bold">Note:</emphasis> The iterator does not traverse the priority queue in order of the priorities. </para></description><type>implementation_defined::iterator</type></typedef> 115<typedef name="const_iterator"><type>implementation_defined::const_iterator</type></typedef> 116<typedef name="ordered_iterator"><type>implementation_defined::ordered_iterator</type></typedef> 117<typedef name="handle_type"><type>implementation_defined::handle_type</type></typedef> 118<data-member name="constant_time_size" specifiers="static"><type>const bool</type></data-member> 119<data-member name="has_ordered_iterators" specifiers="static"><type>const bool</type></data-member> 120<data-member name="is_mergable" specifiers="static"><type>const bool</type></data-member> 121<data-member name="has_reserve" specifiers="static"><type>const bool</type></data-member> 122<data-member name="is_stable" specifiers="static"><type>const bool</type></data-member> 123<method-group name="public member functions"> 124<method name="empty" cv="const"><type>bool</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns true, if the priority queue contains no elements.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 125<method name="size" cv="const"><type>size_type</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns the number of elements contained in the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 126<method name="max_size" cv="const"><type>size_type</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns the maximum number of elements the priority queue can contain.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 127<method name="clear"><type>void</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Removes all elements from the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Linear. </para></description></method> 128<method name="get_allocator" cv="const"><type>allocator_type</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns allocator.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 129<method name="top" cv="const"><type>value_type const &</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns a const_reference to the maximum element.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 130<method name="push"><type>boost::conditional< is_mutable, handle_type, void >::type</type><parameter name="v"><paramtype>value_type const &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Adds a new element to the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic (amortized). Linear (worst case). </para></description></method> 131<method name="emplace"><type>boost::conditional< is_mutable, handle_type, void >::type</type><template> 132 <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter> 133 </template><parameter name="args"><paramtype>Args &&...</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Adds a new element to the priority queue. The element is directly constructed in-place.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic (amortized). Linear (worst case). </para></description></method> 134<method name="operator<" cv="const"><type>bool</type><template> 135 <template-type-parameter name="HeapType"/> 136 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><description><para><emphasis role="bold">Returns:</emphasis> Element-wise comparison of heap data structures</para><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 137<method name="operator>" cv="const"><type>bool</type><template> 138 <template-type-parameter name="HeapType"/> 139 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><description><para><emphasis role="bold">Returns:</emphasis> Element-wise comparison of heap data structures</para><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 140<method name="operator>=" cv="const"><type>bool</type><template> 141 <template-type-parameter name="HeapType"/> 142 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><description><para><emphasis role="bold">Returns:</emphasis> Element-wise comparison of heap data structures</para><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 143<method name="operator<=" cv="const"><type>bool</type><template> 144 <template-type-parameter name="HeapType"/> 145 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><description><para><emphasis role="bold">Returns:</emphasis> Element-wise comparison of heap data structures</para><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 146<method name="operator==" cv="const"><type>bool</type><template> 147 <template-type-parameter name="HeapType"/> 148 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><purpose>Equivalent comparison <emphasis role="bold">Returns:</emphasis> True, if both heap data structures are equivalent. </purpose><description><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 149<method name="operator!=" cv="const"><type>bool</type><template> 150 <template-type-parameter name="HeapType"/> 151 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><purpose>Equivalent comparison <emphasis role="bold">Returns:</emphasis> True, if both heap data structures are not equivalent. </purpose><description><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 152<method name="update"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><parameter name="v"><paramtype>const_reference</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Assigns <computeroutput>v</computeroutput> to the element handled by <computeroutput>handle</computeroutput> & updates the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic.</para><para><emphasis role="bold">Requirement:</emphasis> data structure must be configured as mutable </para></description></method> 153<method name="update"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Updates the heap after the element handled by <computeroutput>handle</computeroutput> has been changed.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic.</para><para><emphasis role="bold">Note:</emphasis> If this is not called, after a handle has been updated, the behavior of the data structure is undefined!</para><para><emphasis role="bold">Requirement:</emphasis> data structure must be configured as mutable </para></description></method> 154<method name="increase"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><parameter name="v"><paramtype>const_reference</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Assigns <computeroutput>v</computeroutput> to the element handled by <computeroutput>handle</computeroutput> & updates the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic.</para><para><emphasis role="bold">Note:</emphasis> The new value is expected to be greater than the current one</para><para><emphasis role="bold">Requirement:</emphasis> data structure must be configured as mutable </para></description></method> 155<method name="increase"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Updates the heap after the element handled by <computeroutput>handle</computeroutput> has been changed.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic.</para><para><emphasis role="bold">Note:</emphasis> The new value is expected to be greater than the current one. If this is not called, after a handle has been updated, the behavior of the data structure is undefined!</para><para><emphasis role="bold">Requirement:</emphasis> data structure must be configured as mutable </para></description></method> 156<method name="decrease"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><parameter name="v"><paramtype>const_reference</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Assigns <computeroutput>v</computeroutput> to the element handled by <computeroutput>handle</computeroutput> & updates the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic.</para><para><emphasis role="bold">Note:</emphasis> The new value is expected to be less than the current one</para><para><emphasis role="bold">Requirement:</emphasis> data structure must be configured as mutable </para></description></method> 157<method name="decrease"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Updates the heap after the element handled by <computeroutput>handle</computeroutput> has been changed.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic.</para><para><emphasis role="bold">Note:</emphasis> The new value is expected to be less than the current one. If this is not called, after a handle has been updated, the behavior of the data structure is undefined!</para><para><emphasis role="bold">Requirement:</emphasis> data structure must be configured as mutable </para></description></method> 158<method name="erase"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Removes the element handled by <computeroutput>handle</computeroutput> from the <classname alt="boost::heap::priority_queue">priority_queue</classname>.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic.</para><para><emphasis role="bold">Requirement:</emphasis> data structure must be configured as mutable </para></description></method> 159<method name="pop"><type>void</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Removes the top element from the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic (amortized). Linear (worst case). </para></description></method> 160<method name="swap"><type>void</type><parameter name="rhs"><paramtype><classname>d_ary_heap</classname> &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Swaps two priority queues.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 161<method name="begin" cv="const"><type>const_iterator</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns an iterator to the first element contained in the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 162<method name="begin"><type>iterator</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns an iterator to the first element contained in the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 163<method name="end"><type>iterator</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns an iterator to the end of the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 164<method name="end" cv="const"><type>const_iterator</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns an iterator to the end of the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 165<method name="ordered_begin" cv="const"><type>ordered_iterator</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns an ordered iterator to the first element contained in the priority queue.</para><para><emphasis role="bold">Note:</emphasis> Ordered iterators traverse the priority queue in heap order. </para></description></method> 166<method name="ordered_end" cv="const"><type>ordered_iterator</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns an ordered iterator to the end of the priority queue.</para><para><emphasis role="bold">Note:</emphasis> Ordered iterators traverse the priority queue in heap order. </para></description></method> 167<method name="reserve"><type>void</type><parameter name="element_count"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Reserves memory for element_count elements</para><para><emphasis role="bold">Complexity:</emphasis> Linear.</para><para><emphasis role="bold">Node:</emphasis> Invalidates iterators </para></description></method> 168<method name="value_comp" cv="const"><type>value_compare const &</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effect:</emphasis> Returns the value_compare object used by the priority queue </para></description></method> 169</method-group> 170<constructor specifiers="explicit"><parameter name="cmp"><paramtype>value_compare const &</paramtype><default>value_compare()</default></parameter><description><para><emphasis role="bold">Effects:</emphasis> constructs an empty priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></constructor> 171<constructor><parameter name="rhs"><paramtype><classname>d_ary_heap</classname> const &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> copy-constructs priority queue from rhs.</para><para><emphasis role="bold">Complexity:</emphasis> Linear. </para></description></constructor> 172<constructor><parameter name="rhs"><paramtype><classname>d_ary_heap</classname> &&</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> C++11-style move constructor.</para><para><emphasis role="bold">Complexity:</emphasis> Constant.</para><para><emphasis role="bold">Note:</emphasis> Only available, if BOOST_NO_CXX11_RVALUE_REFERENCES is not defined </para></description></constructor> 173<copy-assignment><type><classname>d_ary_heap</classname> &</type><parameter name="rhs"><paramtype><classname>d_ary_heap</classname> &&</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> C++11-style move assignment.</para><para><emphasis role="bold">Complexity:</emphasis> Constant.</para><para><emphasis role="bold">Note:</emphasis> Only available, if BOOST_NO_CXX11_RVALUE_REFERENCES is not defined </para></description></copy-assignment> 174<copy-assignment><type><classname>d_ary_heap</classname> &</type><parameter name="rhs"><paramtype><classname>d_ary_heap</classname> const &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Assigns priority queue from rhs.</para><para><emphasis role="bold">Complexity:</emphasis> Linear. </para></description></copy-assignment> 175<method-group name="public static functions"> 176<method name="s_handle_from_iterator" specifiers="static"><type>handle_type</type><parameter name="it"><paramtype>iterator const &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Casts an iterator to a node handle.</para><para><emphasis role="bold">Complexity:</emphasis> Constant.</para><para><emphasis role="bold">Requirement:</emphasis> data structure must be configured as mutable </para></description></method> 177</method-group> 178</class> 179</namespace> 180</namespace> 181</header> 182<header name="boost/heap/fibonacci_heap.hpp"> 183<namespace name="boost"> 184<namespace name="heap"> 185<class name="fibonacci_heap"><template> 186 <template-type-parameter name="T"/> 187 <template-nontype-parameter name="Options"><type>class ...</type></template-nontype-parameter> 188 </template><purpose>fibonacci heap </purpose><description><para>The template parameter T is the type to be managed by the container. The user can specify additional options and if no options are provided default options are used.</para><para>The container supports the following options:<itemizedlist> 189<listitem><para><computeroutput>boost::heap::stable<></computeroutput>, defaults to <computeroutput>stable<false></computeroutput> </para> 190</listitem><listitem><para><computeroutput>boost::heap::compare<></computeroutput>, defaults to <computeroutput>compare<std::less<T></computeroutput> ></para> 191</listitem><listitem><para><computeroutput>boost::heap::allocator<></computeroutput>, defaults to <computeroutput>allocator<std::allocator<T></computeroutput> ></para> 192</listitem><listitem><para><computeroutput>boost::heap::constant_time_size<></computeroutput>, defaults to <computeroutput>constant_time_size<true></computeroutput> </para> 193</listitem><listitem><para><computeroutput>boost::heap::stability_counter_type<></computeroutput>, defaults to <computeroutput>stability_counter_type<boost::uintmax_t></computeroutput> </para> 194</listitem></itemizedlist> 195</para></description><typedef name="value_type"><type>T</type></typedef> 196<typedef name="size_type"><type>implementation_defined::size_type</type></typedef> 197<typedef name="difference_type"><type>implementation_defined::difference_type</type></typedef> 198<typedef name="value_compare"><type>implementation_defined::value_compare</type></typedef> 199<typedef name="allocator_type"><type>implementation_defined::allocator_type</type></typedef> 200<typedef name="reference"><type>implementation_defined::reference</type></typedef> 201<typedef name="const_reference"><type>implementation_defined::const_reference</type></typedef> 202<typedef name="pointer"><type>implementation_defined::pointer</type></typedef> 203<typedef name="const_pointer"><type>implementation_defined::const_pointer</type></typedef> 204<typedef name="iterator"><description><para><emphasis role="bold">Note:</emphasis> The iterator does not traverse the priority queue in order of the priorities. </para></description><type>implementation_defined::iterator</type></typedef> 205<typedef name="const_iterator"><type>implementation_defined::const_iterator</type></typedef> 206<typedef name="ordered_iterator"><type>implementation_defined::ordered_iterator</type></typedef> 207<typedef name="handle_type"><type>implementation_defined::handle_type</type></typedef> 208<data-member name="constant_time_size" specifiers="static"><type>const bool</type></data-member> 209<data-member name="has_ordered_iterators" specifiers="static"><type>const bool</type></data-member> 210<data-member name="is_mergable" specifiers="static"><type>const bool</type></data-member> 211<data-member name="is_stable" specifiers="static"><type>const bool</type></data-member> 212<data-member name="has_reserve" specifiers="static"><type>const bool</type></data-member> 213<method-group name="public member functions"> 214<method name="empty" cv="const"><type>bool</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns true, if the priority queue contains no elements.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 215<method name="size" cv="const"><type>size_type</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns the number of elements contained in the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 216<method name="max_size" cv="const"><type>size_type</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns the maximum number of elements the priority queue can contain.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 217<method name="clear"><type>void</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Removes all elements from the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Linear. </para></description></method> 218<method name="get_allocator" cv="const"><type>allocator_type</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns allocator.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 219<method name="swap"><type>void</type><parameter name="rhs"><paramtype><classname>fibonacci_heap</classname> &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Swaps two priority queues.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 220<method name="top" cv="const"><type>value_type const &</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns a const_reference to the maximum element.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 221<method name="push"><type>handle_type</type><parameter name="v"><paramtype>value_type const &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Adds a new element to the priority queue. Returns handle to element</para><para><emphasis role="bold">Complexity:</emphasis> Constant.</para><para><emphasis role="bold">Note:</emphasis> Does not invalidate iterators. </para></description></method> 222<method name="emplace"><type>handle_type</type><template> 223 <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter> 224 </template><parameter name="args"><paramtype>Args &&...</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Adds a new element to the priority queue. The element is directly constructed in-place. Returns handle to element.</para><para><emphasis role="bold">Complexity:</emphasis> Constant.</para><para><emphasis role="bold">Note:</emphasis> Does not invalidate iterators. </para></description></method> 225<method name="pop"><type>void</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Removes the top element from the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic (amortized). Linear (worst case). </para></description></method> 226<method name="update"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><parameter name="v"><paramtype>const_reference</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Assigns <computeroutput>v</computeroutput> to the element handled by <computeroutput>handle</computeroutput> & updates the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic if current value < v, Constant otherwise. </para></description></method> 227<method name="update_lazy"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><parameter name="v"><paramtype>const_reference</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Assigns <computeroutput>v</computeroutput> to the element handled by <computeroutput>handle</computeroutput> & updates the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic if current value < v, Constant otherwise.</para><para><emphasis role="bold">Rationale:</emphasis> The lazy update function is a modification of the traditional update, that just invalidates the iterator to the object referred to by the handle. </para></description></method> 228<method name="update"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Updates the heap after the element handled by <computeroutput>handle</computeroutput> has been changed.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic.</para><para><emphasis role="bold">Note:</emphasis> If this is not called, after a handle has been updated, the behavior of the data structure is undefined! </para></description></method> 229<method name="update_lazy"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><purpose>(handle_type handle) </purpose><description><para><emphasis role="bold">Effects:</emphasis> Assigns <computeroutput>v</computeroutput> to the element handled by <computeroutput>handle</computeroutput> & updates the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic if current value < v, Constant otherwise. (handle_type handle)</para><para><emphasis role="bold">Rationale:</emphasis> The lazy update function is a modification of the traditional update, that just invalidates the iterator to the object referred to by the handle. </para></description></method> 230<method name="increase"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><parameter name="v"><paramtype>const_reference</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Assigns <computeroutput>v</computeroutput> to the element handled by <computeroutput>handle</computeroutput> & updates the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant.</para><para><emphasis role="bold">Note:</emphasis> The new value is expected to be greater than the current one </para></description></method> 231<method name="increase"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Updates the heap after the element handled by <computeroutput>handle</computeroutput> has been changed.</para><para><emphasis role="bold">Complexity:</emphasis> Constant.</para><para><emphasis role="bold">Note:</emphasis> If this is not called, after a handle has been updated, the behavior of the data structure is undefined! </para></description></method> 232<method name="decrease"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><parameter name="v"><paramtype>const_reference</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Assigns <computeroutput>v</computeroutput> to the element handled by <computeroutput>handle</computeroutput> & updates the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic.</para><para><emphasis role="bold">Note:</emphasis> The new value is expected to be less than the current one </para></description></method> 233<method name="decrease"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Updates the heap after the element handled by <computeroutput>handle</computeroutput> has been changed.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic.</para><para><emphasis role="bold">Note:</emphasis> The new value is expected to be less than the current one. If this is not called, after a handle has been updated, the behavior of the data structure is undefined! </para></description></method> 234<method name="erase"><type>void</type><parameter name="handle"><paramtype>handle_type const &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Removes the element handled by <computeroutput>handle</computeroutput> from the <classname alt="boost::heap::priority_queue">priority_queue</classname>.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic. </para></description></method> 235<method name="begin" cv="const"><type>iterator</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns an iterator to the first element contained in the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 236<method name="end" cv="const"><type>iterator</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns an iterator to the end of the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 237<method name="ordered_begin" cv="const"><type>ordered_iterator</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns an ordered iterator to the first element contained in the priority queue.</para><para><emphasis role="bold">Note:</emphasis> Ordered iterators traverse the priority queue in heap order. </para></description></method> 238<method name="ordered_end" cv="const"><type>ordered_iterator</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns an ordered iterator to the end of the priority queue.</para><para><emphasis role="bold">Note:</emphasis> Ordered iterators traverse the priority queue in heap order. </para></description></method> 239<method name="merge"><type>void</type><parameter name="rhs"><paramtype><classname>fibonacci_heap</classname> &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Merge with priority queue rhs.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 240<method name="value_comp" cv="const"><type>value_compare const &</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effect:</emphasis> Returns the value_compare object used by the priority queue </para></description></method> 241<method name="operator<" cv="const"><type>bool</type><template> 242 <template-type-parameter name="HeapType"/> 243 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><description><para><emphasis role="bold">Returns:</emphasis> Element-wise comparison of heap data structures</para><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 244<method name="operator>" cv="const"><type>bool</type><template> 245 <template-type-parameter name="HeapType"/> 246 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><description><para><emphasis role="bold">Returns:</emphasis> Element-wise comparison of heap data structures</para><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 247<method name="operator>=" cv="const"><type>bool</type><template> 248 <template-type-parameter name="HeapType"/> 249 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><description><para><emphasis role="bold">Returns:</emphasis> Element-wise comparison of heap data structures</para><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 250<method name="operator<=" cv="const"><type>bool</type><template> 251 <template-type-parameter name="HeapType"/> 252 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><description><para><emphasis role="bold">Returns:</emphasis> Element-wise comparison of heap data structures</para><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 253<method name="operator==" cv="const"><type>bool</type><template> 254 <template-type-parameter name="HeapType"/> 255 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><purpose>Equivalent comparison <emphasis role="bold">Returns:</emphasis> True, if both heap data structures are equivalent. </purpose><description><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 256<method name="operator!=" cv="const"><type>bool</type><template> 257 <template-type-parameter name="HeapType"/> 258 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><purpose>Equivalent comparison <emphasis role="bold">Returns:</emphasis> True, if both heap data structures are not equivalent. </purpose><description><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 259</method-group> 260<constructor specifiers="explicit"><parameter name="cmp"><paramtype>value_compare const &</paramtype><default>value_compare()</default></parameter><description><para><emphasis role="bold">Effects:</emphasis> constructs an empty priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></constructor> 261<constructor><parameter name="rhs"><paramtype><classname>fibonacci_heap</classname> const &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> copy-constructs priority queue from rhs.</para><para><emphasis role="bold">Complexity:</emphasis> Linear. </para></description></constructor> 262<constructor><parameter name="rhs"><paramtype><classname>fibonacci_heap</classname> &&</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> C++11-style move constructor.</para><para><emphasis role="bold">Complexity:</emphasis> Constant.</para><para><emphasis role="bold">Note:</emphasis> Only available, if BOOST_NO_CXX11_RVALUE_REFERENCES is not defined </para></description></constructor> 263<copy-assignment><type><classname>fibonacci_heap</classname> &</type><parameter name="rhs"><paramtype><classname>fibonacci_heap</classname> &&</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> C++11-style move assignment.</para><para><emphasis role="bold">Complexity:</emphasis> Constant.</para><para><emphasis role="bold">Note:</emphasis> Only available, if BOOST_NO_CXX11_RVALUE_REFERENCES is not defined </para></description></copy-assignment> 264<copy-assignment><type><classname>fibonacci_heap</classname> &</type><parameter name="rhs"><paramtype><classname>fibonacci_heap</classname> const &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Assigns priority queue from rhs.</para><para><emphasis role="bold">Complexity:</emphasis> Linear. </para></description></copy-assignment> 265<destructor><parameter name=""><paramtype>void</paramtype></parameter></destructor> 266<method-group name="public static functions"> 267<method name="s_handle_from_iterator" specifiers="static"><type>handle_type</type><parameter name="it"><paramtype>iterator const &</paramtype></parameter></method> 268</method-group> 269</class> 270</namespace> 271</namespace> 272</header> 273<header name="boost/heap/heap_concepts.hpp"> 274<namespace name="boost"> 275<namespace name="heap"> 276<struct name="MergablePriorityQueue"><template> 277 <template-type-parameter name="C"/> 278 </template><inherit access="public">boost::heap::PriorityQueue< C ></inherit><method-group name="public member functions"> 279<method name="BOOST_CONCEPT_USAGE"><type/><parameter name=""><paramtype>MergablePriorityQueue</paramtype></parameter></method> 280<method name="BOOST_CONCEPT_USAGE"><type/><parameter name=""><paramtype>PriorityQueue</paramtype></parameter></method> 281</method-group> 282<typedef name="iterator"><type>C::iterator</type></typedef> 283<typedef name="const_iterator"><type>C::const_iterator</type></typedef> 284<typedef name="allocator_type"><type>C::allocator_type</type></typedef> 285<typedef name="value_compare"><type>C::value_compare</type></typedef> 286<typedef name="value_type"><type>C::value_type</type></typedef> 287<typedef name="const_reference"><type>C::const_reference</type></typedef> 288</struct><struct name="MutablePriorityQueue"><template> 289 <template-type-parameter name="C"/> 290 </template><inherit access="public">boost::heap::PriorityQueue< C ></inherit><typedef name="handle_type"><type>C::handle_type</type></typedef> 291<typedef name="iterator"><type>C::iterator</type></typedef> 292<typedef name="const_iterator"><type>C::const_iterator</type></typedef> 293<typedef name="allocator_type"><type>C::allocator_type</type></typedef> 294<typedef name="value_compare"><type>C::value_compare</type></typedef> 295<typedef name="value_type"><type>C::value_type</type></typedef> 296<typedef name="const_reference"><type>C::const_reference</type></typedef> 297<data-member name="c"><type>C</type></data-member> 298<data-member name="equal"><type>bool</type></data-member> 299<data-member name="not_equal"><type>bool</type></data-member> 300<method-group name="public member functions"> 301<method name="BOOST_CONCEPT_USAGE"><type/><parameter name=""><paramtype>MutablePriorityQueue</paramtype></parameter></method> 302<method name="BOOST_CONCEPT_USAGE"><type/><parameter name=""><paramtype>PriorityQueue</paramtype></parameter></method> 303</method-group> 304</struct><struct name="PriorityQueue"><template> 305 <template-type-parameter name="C"/> 306 </template><inherit access="public">boost::ForwardContainer< C ></inherit><typedef name="iterator"><type>C::iterator</type></typedef> 307<typedef name="const_iterator"><type>C::const_iterator</type></typedef> 308<typedef name="allocator_type"><type>C::allocator_type</type></typedef> 309<typedef name="value_compare"><type>C::value_compare</type></typedef> 310<typedef name="value_type"><type>C::value_type</type></typedef> 311<typedef name="const_reference"><type>C::const_reference</type></typedef> 312<method-group name="public member functions"> 313<method name="BOOST_CONCEPT_USAGE"><type/><parameter name=""><paramtype>PriorityQueue</paramtype></parameter></method> 314</method-group> 315</struct> 316</namespace> 317</namespace> 318</header> 319<header name="boost/heap/heap_merge.hpp"> 320<namespace name="boost"> 321<namespace name="heap"> 322<function name="heap_merge"><type>void</type><template> 323 <template-type-parameter name="Heap1"/> 324 <template-type-parameter name="Heap2"/> 325 </template><parameter name="lhs"><paramtype>Heap1 &</paramtype></parameter><parameter name="rhs"><paramtype>Heap2 &</paramtype></parameter><description><para>merge rhs into lhs</para><para><emphasis role="bold">Effect:</emphasis> lhs contains all elements that have been part of rhs, rhs is empty. </para></description></function> 326</namespace> 327</namespace> 328</header> 329<header name="boost/heap/pairing_heap.hpp"> 330<namespace name="boost"> 331<namespace name="heap"> 332<class name="pairing_heap"><template> 333 <template-type-parameter name="T"/> 334 <template-nontype-parameter name="Options"><type>class ...</type></template-nontype-parameter> 335 </template><purpose>pairing heap </purpose><description><para>Pairing heaps are self-adjusting binary heaps. Although design and implementation are rather simple, the complexity analysis is yet unsolved. For details, consult:</para><para>Pettie, Seth (2005), "Towards a final analysis of pairing heaps", Proc. 46th Annual IEEE Symposium on Foundations of Computer Science, pp. 174-183</para><para>The template parameter T is the type to be managed by the container. The user can specify additional options and if no options are provided default options are used.</para><para>The container supports the following options:<itemizedlist> 336<listitem><para><computeroutput>boost::heap::compare<></computeroutput>, defaults to <computeroutput>compare<std::less<T></computeroutput> ></para> 337</listitem><listitem><para><computeroutput>boost::heap::stable<></computeroutput>, defaults to <computeroutput>stable<false></computeroutput> </para> 338</listitem><listitem><para><computeroutput>boost::heap::stability_counter_type<></computeroutput>, defaults to <computeroutput>stability_counter_type<boost::uintmax_t></computeroutput> </para> 339</listitem><listitem><para><computeroutput>boost::heap::allocator<></computeroutput>, defaults to <computeroutput>allocator<std::allocator<T></computeroutput> ></para> 340</listitem><listitem><para><computeroutput>boost::heap::constant_time_size<></computeroutput>, defaults to <computeroutput>constant_time_size<true></computeroutput> </para> 341</listitem></itemizedlist> 342</para></description><typedef name="value_type"><type>T</type></typedef> 343<typedef name="size_type"><type>implementation_defined::size_type</type></typedef> 344<typedef name="difference_type"><type>implementation_defined::difference_type</type></typedef> 345<typedef name="value_compare"><type>implementation_defined::value_compare</type></typedef> 346<typedef name="allocator_type"><type>implementation_defined::allocator_type</type></typedef> 347<typedef name="reference"><type>implementation_defined::reference</type></typedef> 348<typedef name="const_reference"><type>implementation_defined::const_reference</type></typedef> 349<typedef name="pointer"><type>implementation_defined::pointer</type></typedef> 350<typedef name="const_pointer"><type>implementation_defined::const_pointer</type></typedef> 351<typedef name="iterator"><description><para><emphasis role="bold">Note:</emphasis> The iterator does not traverse the priority queue in order of the priorities. </para></description><type>implementation_defined::iterator</type></typedef> 352<typedef name="const_iterator"><type>implementation_defined::const_iterator</type></typedef> 353<typedef name="ordered_iterator"><type>implementation_defined::ordered_iterator</type></typedef> 354<typedef name="handle_type"><type>implementation_defined::handle_type</type></typedef> 355<data-member name="constant_time_size" specifiers="static"><type>const bool</type></data-member> 356<data-member name="has_ordered_iterators" specifiers="static"><type>const bool</type></data-member> 357<data-member name="is_mergable" specifiers="static"><type>const bool</type></data-member> 358<data-member name="is_stable" specifiers="static"><type>const bool</type></data-member> 359<data-member name="has_reserve" specifiers="static"><type>const bool</type></data-member> 360<method-group name="public member functions"> 361<method name="empty" cv="const"><type>bool</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns true, if the priority queue contains no elements.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 362<method name="size" cv="const"><type>size_type</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns the number of elements contained in the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant, if configured with constant_time_size<true>, otherwise linear. </para></description></method> 363<method name="max_size" cv="const"><type>size_type</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns the maximum number of elements the priority queue can contain.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 364<method name="clear"><type>void</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Removes all elements from the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Linear. </para></description></method> 365<method name="get_allocator" cv="const"><type>allocator_type</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns allocator.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 366<method name="swap"><type>void</type><parameter name="rhs"><paramtype><classname>pairing_heap</classname> &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Swaps two priority queues.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 367<method name="top" cv="const"><type>const_reference</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns a const_reference to the maximum element.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 368<method name="push"><type>handle_type</type><parameter name="v"><paramtype>value_type const &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Adds a new element to the priority queue. Returns handle to element<emphasis role="bold">Complexity:</emphasis> 2**2*log(log(N)) (amortized). </para></description></method> 369<method name="emplace"><type>handle_type</type><template> 370 <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter> 371 </template><parameter name="args"><paramtype>Args &&...</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Adds a new element to the priority queue. The element is directly constructed in-place. Returns handle to element.<emphasis role="bold">Complexity:</emphasis> 2**2*log(log(N)) (amortized). </para></description></method> 372<method name="pop"><type>void</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Removes the top element from the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic (amortized). </para></description></method> 373<method name="update"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><parameter name="v"><paramtype>const_reference</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Assigns <computeroutput>v</computeroutput> to the element handled by <computeroutput>handle</computeroutput> & updates the priority queue.<emphasis role="bold">Complexity:</emphasis> 2**2*log(log(N)) (amortized). </para></description></method> 374<method name="update"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Updates the heap after the element handled by <computeroutput>handle</computeroutput> has been changed.<emphasis role="bold">Complexity:</emphasis> 2**2*log(log(N)) (amortized).</para><para><emphasis role="bold">Note:</emphasis> If this is not called, after a handle has been updated, the behavior of the data structure is undefined! </para></description></method> 375<method name="increase"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><parameter name="v"><paramtype>const_reference</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Assigns <computeroutput>v</computeroutput> to the element handled by <computeroutput>handle</computeroutput> & updates the priority queue.<emphasis role="bold">Complexity:</emphasis> 2**2*log(log(N)) (amortized).</para><para><emphasis role="bold">Note:</emphasis> The new value is expected to be greater than the current one </para></description></method> 376<method name="increase"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Updates the heap after the element handled by <computeroutput>handle</computeroutput> has been changed.<emphasis role="bold">Complexity:</emphasis> 2**2*log(log(N)) (amortized).</para><para><emphasis role="bold">Note:</emphasis> If this is not called, after a handle has been updated, the behavior of the data structure is undefined! </para></description></method> 377<method name="decrease"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><parameter name="v"><paramtype>const_reference</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Assigns <computeroutput>v</computeroutput> to the element handled by <computeroutput>handle</computeroutput> & updates the priority queue.<emphasis role="bold">Complexity:</emphasis> 2**2*log(log(N)) (amortized).</para><para><emphasis role="bold">Note:</emphasis> The new value is expected to be less than the current one </para></description></method> 378<method name="decrease"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Updates the heap after the element handled by <computeroutput>handle</computeroutput> has been changed.<emphasis role="bold">Complexity:</emphasis> 2**2*log(log(N)) (amortized).</para><para><emphasis role="bold">Note:</emphasis> The new value is expected to be less than the current one. If this is not called, after a handle has been updated, the behavior of the data structure is undefined! </para></description></method> 379<method name="erase"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Removes the element handled by <computeroutput>handle</computeroutput> from the <classname alt="boost::heap::priority_queue">priority_queue</classname>.<emphasis role="bold">Complexity:</emphasis> 2**2*log(log(N)) (amortized). </para></description></method> 380<method name="begin" cv="const"><type>iterator</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns an iterator to the first element contained in the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 381<method name="end" cv="const"><type>iterator</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns an iterator to the end of the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 382<method name="ordered_begin" cv="const"><type>ordered_iterator</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns an ordered iterator to the first element contained in the priority queue.</para><para><emphasis role="bold">Note:</emphasis> Ordered iterators traverse the priority queue in heap order. </para></description></method> 383<method name="ordered_end" cv="const"><type>ordered_iterator</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns an ordered iterator to the first element contained in the priority queue.</para><para><emphasis role="bold">Note:</emphasis> Ordered iterators traverse the priority queue in heap order. </para></description></method> 384<method name="merge"><type>void</type><parameter name="rhs"><paramtype><classname>pairing_heap</classname> &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Merge all elements from rhs into this<emphasis role="bold">Complexity:</emphasis> 2**2*log(log(N)) (amortized). </para></description></method> 385<method name="value_comp" cv="const"><type>value_compare const &</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effect:</emphasis> Returns the value_compare object used by the priority queue </para></description></method> 386<method name="operator<" cv="const"><type>bool</type><template> 387 <template-type-parameter name="HeapType"/> 388 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><description><para><emphasis role="bold">Returns:</emphasis> Element-wise comparison of heap data structures</para><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 389<method name="operator>" cv="const"><type>bool</type><template> 390 <template-type-parameter name="HeapType"/> 391 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><description><para><emphasis role="bold">Returns:</emphasis> Element-wise comparison of heap data structures</para><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 392<method name="operator>=" cv="const"><type>bool</type><template> 393 <template-type-parameter name="HeapType"/> 394 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><description><para><emphasis role="bold">Returns:</emphasis> Element-wise comparison of heap data structures</para><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 395<method name="operator<=" cv="const"><type>bool</type><template> 396 <template-type-parameter name="HeapType"/> 397 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><description><para><emphasis role="bold">Returns:</emphasis> Element-wise comparison of heap data structures</para><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 398<method name="operator==" cv="const"><type>bool</type><template> 399 <template-type-parameter name="HeapType"/> 400 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><purpose>Equivalent comparison <emphasis role="bold">Returns:</emphasis> True, if both heap data structures are equivalent. </purpose><description><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 401<method name="operator!=" cv="const"><type>bool</type><template> 402 <template-type-parameter name="HeapType"/> 403 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><purpose>Equivalent comparison <emphasis role="bold">Returns:</emphasis> True, if both heap data structures are not equivalent. </purpose><description><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 404</method-group> 405<constructor specifiers="explicit"><parameter name="cmp"><paramtype>value_compare const &</paramtype><default>value_compare()</default></parameter><description><para><emphasis role="bold">Effects:</emphasis> constructs an empty priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></constructor> 406<constructor><parameter name="rhs"><paramtype><classname>pairing_heap</classname> const &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> copy-constructs priority queue from rhs.</para><para><emphasis role="bold">Complexity:</emphasis> Linear. </para></description></constructor> 407<constructor><parameter name="rhs"><paramtype><classname>pairing_heap</classname> &&</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> C++11-style move constructor.</para><para><emphasis role="bold">Complexity:</emphasis> Constant.</para><para><emphasis role="bold">Note:</emphasis> Only available, if BOOST_NO_CXX11_RVALUE_REFERENCES is not defined </para></description></constructor> 408<copy-assignment><type><classname>pairing_heap</classname> &</type><parameter name="rhs"><paramtype><classname>pairing_heap</classname> &&</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> C++11-style move assignment.</para><para><emphasis role="bold">Complexity:</emphasis> Constant.</para><para><emphasis role="bold">Note:</emphasis> Only available, if BOOST_NO_CXX11_RVALUE_REFERENCES is not defined </para></description></copy-assignment> 409<copy-assignment><type><classname>pairing_heap</classname> &</type><parameter name="rhs"><paramtype><classname>pairing_heap</classname> const &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Assigns priority queue from rhs.</para><para><emphasis role="bold">Complexity:</emphasis> Linear. </para></description></copy-assignment> 410<destructor><parameter name=""><paramtype>void</paramtype></parameter></destructor> 411<method-group name="public static functions"> 412<method name="s_handle_from_iterator" specifiers="static"><type>handle_type</type><parameter name="it"><paramtype>iterator const &</paramtype></parameter></method> 413</method-group> 414</class> 415</namespace> 416</namespace> 417</header> 418<header name="boost/heap/policies.hpp"> 419<namespace name="boost"> 420<namespace name="heap"> 421<struct name="allocator"><template> 422 <template-type-parameter name="T"/> 423 </template><purpose>Specifies allocator for the internal memory management. </purpose></struct><struct name="arity"><template> 424 <template-nontype-parameter name="T"><type>unsigned int</type></template-nontype-parameter> 425 </template><purpose>Specify arity. </purpose><description><para>Specifies the arity of a D-ary heap </para></description></struct><struct name="compare"><template> 426 <template-type-parameter name="T"/> 427 </template><purpose>Specifies the predicate for the heap order. </purpose></struct><struct name="constant_time_size"><template> 428 <template-nontype-parameter name="T"><type>bool</type></template-nontype-parameter> 429 </template><purpose>Configures complexity of <computeroutput> size() </computeroutput> </purpose><description><para>Specifies, whether size() should have linear or constant complexity. </para></description></struct><struct name="mutable_"><template> 430 <template-nontype-parameter name="T"><type>bool</type></template-nontype-parameter> 431 </template><purpose>Configure heap as mutable. </purpose><description><para>Certain heaps need to be configured specifically do be mutable. </para></description></struct><struct name="stability_counter_type"><template> 432 <template-type-parameter name="IntType"/> 433 </template><purpose>Specifies the type for stability counter. </purpose></struct><struct name="stable"><template> 434 <template-nontype-parameter name="T"><type>bool</type></template-nontype-parameter> 435 </template><purpose>Configure a heap as <emphasis role="bold">stable</emphasis>. </purpose><description><para>A priority queue is stable, if elements with the same priority are popped from the heap, in the same order as they are inserted. </para></description></struct><struct name="store_parent_pointer"><template> 436 <template-nontype-parameter name="T"><type>bool</type></template-nontype-parameter> 437 </template><purpose>Store parent pointer in heap node. </purpose><description><para>Maintaining a parent pointer adds some maintenance and size overhead, but iterating a heap is more efficient. </para></description></struct> 438</namespace> 439</namespace> 440</header> 441<header name="boost/heap/priority_queue.hpp"> 442<namespace name="boost"> 443<namespace name="heap"> 444<class name="priority_queue"><template> 445 <template-type-parameter name="T"/> 446 <template-nontype-parameter name="Options"><type>class ...</type></template-nontype-parameter> 447 </template><purpose>priority queue, based on stl heap functions </purpose><description><para>The <classname alt="boost::heap::priority_queue">priority_queue</classname> class is a wrapper for the stl heap functions.<sbr/> 448 The template parameter T is the type to be managed by the container. The user can specify additional options and if no options are provided default options are used.</para><para>The container supports the following options:<itemizedlist> 449<listitem><para><computeroutput>boost::heap::compare<></computeroutput>, defaults to <computeroutput>compare<std::less<T></computeroutput> ></para> 450</listitem><listitem><para><computeroutput>boost::heap::stable<></computeroutput>, defaults to <computeroutput>stable<false></computeroutput> </para> 451</listitem><listitem><para><computeroutput>boost::heap::stability_counter_type<></computeroutput>, defaults to <computeroutput>stability_counter_type<boost::uintmax_t></computeroutput> </para> 452</listitem><listitem><para><computeroutput>boost::heap::allocator<></computeroutput>, defaults to <computeroutput>allocator<std::allocator<T></computeroutput> > </para> 453</listitem></itemizedlist> 454</para></description><typedef name="value_type"><type>T</type></typedef> 455<typedef name="size_type"><type>implementation_defined::size_type</type></typedef> 456<typedef name="difference_type"><type>implementation_defined::difference_type</type></typedef> 457<typedef name="value_compare"><type>implementation_defined::value_compare</type></typedef> 458<typedef name="allocator_type"><type>implementation_defined::allocator_type</type></typedef> 459<typedef name="reference"><type>implementation_defined::reference</type></typedef> 460<typedef name="const_reference"><type>implementation_defined::const_reference</type></typedef> 461<typedef name="pointer"><type>implementation_defined::pointer</type></typedef> 462<typedef name="const_pointer"><type>implementation_defined::const_pointer</type></typedef> 463<typedef name="iterator"><description><para><emphasis role="bold">Note:</emphasis> The iterator does not traverse the priority queue in order of the priorities. </para></description><type>implementation_defined::iterator</type></typedef> 464<typedef name="const_iterator"><type>implementation_defined::const_iterator</type></typedef> 465<data-member name="constant_time_size" specifiers="static"><type>const bool</type></data-member> 466<data-member name="has_ordered_iterators" specifiers="static"><type>const bool</type></data-member> 467<data-member name="is_mergable" specifiers="static"><type>const bool</type></data-member> 468<data-member name="is_stable" specifiers="static"><type>const bool</type></data-member> 469<data-member name="has_reserve" specifiers="static"><type>const bool</type></data-member> 470<method-group name="public member functions"> 471<method name="empty" cv="const noexcept"><type>bool</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns true, if the priority queue contains no elements.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 472<method name="size" cv="const noexcept"><type>size_type</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns the number of elements contained in the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 473<method name="max_size" cv="const noexcept"><type>size_type</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns the maximum number of elements the priority queue can contain.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 474<method name="clear" cv="noexcept"><type>void</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Removes all elements from the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Linear. </para></description></method> 475<method name="get_allocator" cv="const"><type>allocator_type</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns allocator.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 476<method name="top" cv="const"><type>const_reference</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns a const_reference to the maximum element.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 477<method name="push"><type>void</type><parameter name="v"><paramtype>value_type const &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Adds a new element to the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic (amortized). Linear (worst case). </para></description></method> 478<method name="emplace"><type>void</type><template> 479 <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter> 480 </template><parameter name="args"><paramtype>Args &&...</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Adds a new element to the priority queue. The element is directly constructed in-place.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic (amortized). Linear (worst case). </para></description></method> 481<method name="pop"><type>void</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Removes the top element from the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic (amortized). Linear (worst case). </para></description></method> 482<method name="swap" cv="noexcept(boost::is_nothrow_move_constructible< super_t >::value &&boost::is_nothrow_move_assignable< super_t >::value))"><type>void</type><parameter name="rhs"><paramtype><classname>priority_queue</classname> &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Swaps two priority queues.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 483<method name="begin" cv="const noexcept"><type>iterator</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns an iterator to the first element contained in the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 484<method name="end" cv="const noexcept"><type>iterator</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns an iterator to the end of the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 485<method name="reserve"><type>void</type><parameter name="element_count"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Reserves memory for element_count elements</para><para><emphasis role="bold">Complexity:</emphasis> Linear.</para><para><emphasis role="bold">Node:</emphasis> Invalidates iterators </para></description></method> 486<method name="value_comp" cv="const"><type>value_compare const &</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effect:</emphasis> Returns the value_compare object used by the priority queue </para></description></method> 487<method name="operator<" cv="const"><type>bool</type><template> 488 <template-type-parameter name="HeapType"/> 489 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><description><para><emphasis role="bold">Returns:</emphasis> Element-wise comparison of heap data structures</para><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 490<method name="operator>" cv="const"><type>bool</type><template> 491 <template-type-parameter name="HeapType"/> 492 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><description><para><emphasis role="bold">Returns:</emphasis> Element-wise comparison of heap data structures</para><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 493<method name="operator>=" cv="const"><type>bool</type><template> 494 <template-type-parameter name="HeapType"/> 495 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><description><para><emphasis role="bold">Returns:</emphasis> Element-wise comparison of heap data structures</para><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 496<method name="operator<=" cv="const"><type>bool</type><template> 497 <template-type-parameter name="HeapType"/> 498 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><description><para><emphasis role="bold">Returns:</emphasis> Element-wise comparison of heap data structures</para><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 499<method name="operator==" cv="const"><type>bool</type><template> 500 <template-type-parameter name="HeapType"/> 501 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><purpose>Equivalent comparison <emphasis role="bold">Returns:</emphasis> True, if both heap data structures are equivalent. </purpose><description><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 502<method name="operator!=" cv="const"><type>bool</type><template> 503 <template-type-parameter name="HeapType"/> 504 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><purpose>Equivalent comparison <emphasis role="bold">Returns:</emphasis> True, if both heap data structures are not equivalent. </purpose><description><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 505</method-group> 506<constructor specifiers="explicit"><parameter name="cmp"><paramtype>value_compare const &</paramtype><default>value_compare()</default></parameter><description><para><emphasis role="bold">Effects:</emphasis> constructs an empty priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></constructor> 507<constructor><parameter name="rhs"><paramtype><classname>priority_queue</classname> const &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> copy-constructs priority queue from rhs.</para><para><emphasis role="bold">Complexity:</emphasis> Linear. </para></description></constructor> 508<constructor cv="noexcept(boost::is_nothrow_move_constructible< super_t >::value))"><parameter name="rhs"><paramtype><classname>priority_queue</classname> &&</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> C++11-style move constructor.</para><para><emphasis role="bold">Complexity:</emphasis> Constant.</para><para><emphasis role="bold">Note:</emphasis> Only available, if BOOST_NO_CXX11_RVALUE_REFERENCES is not defined </para></description></constructor> 509<copy-assignment cv="noexcept(boost::is_nothrow_move_assignable< super_t >::value))"><type><classname>priority_queue</classname> &</type><parameter name="rhs"><paramtype><classname>priority_queue</classname> &&</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> C++11-style move assignment.</para><para><emphasis role="bold">Complexity:</emphasis> Constant.</para><para><emphasis role="bold">Note:</emphasis> Only available, if BOOST_NO_CXX11_RVALUE_REFERENCES is not defined </para></description></copy-assignment> 510<copy-assignment><type><classname>priority_queue</classname> &</type><parameter name="rhs"><paramtype><classname>priority_queue</classname> const &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Assigns priority queue from rhs.</para><para><emphasis role="bold">Complexity:</emphasis> Linear. </para></description></copy-assignment> 511</class> 512</namespace> 513</namespace> 514</header> 515<header name="boost/heap/skew_heap.hpp"> 516<namespace name="boost"> 517<namespace name="heap"> 518<class name="skew_heap"><template> 519 <template-type-parameter name="T"/> 520 <template-nontype-parameter name="Options"><type>class ...</type></template-nontype-parameter> 521 </template><purpose>skew heap </purpose><description><para>The template parameter T is the type to be managed by the container. The user can specify additional options and if no options are provided default options are used.</para><para>The container supports the following options:<itemizedlist> 522<listitem><para><computeroutput>boost::heap::compare<></computeroutput>, defaults to <computeroutput>compare<std::less<T></computeroutput> ></para> 523</listitem><listitem><para><computeroutput>boost::heap::stable<></computeroutput>, defaults to <computeroutput>stable<false></computeroutput> </para> 524</listitem><listitem><para><computeroutput>boost::heap::stability_counter_type<></computeroutput>, defaults to <computeroutput>stability_counter_type<boost::uintmax_t></computeroutput> </para> 525</listitem><listitem><para><computeroutput>boost::heap::allocator<></computeroutput>, defaults to <computeroutput>allocator<std::allocator<T></computeroutput> ></para> 526</listitem><listitem><para><computeroutput>boost::heap::constant_time_size<></computeroutput>, defaults to <computeroutput>constant_time_size<true></computeroutput> </para> 527</listitem><listitem><para><computeroutput>boost::heap::store_parent_pointer<></computeroutput>, defaults to <computeroutput>store_parent_pointer<true></computeroutput>. Maintaining a parent pointer adds some maintenance and size overhead, but iterating a heap is more efficient.</para> 528</listitem><listitem><para><computeroutput>boost::heap::mutable<></computeroutput>, defaults to <computeroutput>mutable<false></computeroutput>. </para> 529</listitem></itemizedlist> 530</para></description><struct name="implementation_defined"><template> 531 <template-type-parameter name="T"/> 532 <template-type-parameter name="A0"><default>boost::parameter::void_</default></template-type-parameter> 533 <template-type-parameter name="A1"><default>boost::parameter::void_</default></template-type-parameter> 534 <template-type-parameter name="A2"><default>boost::parameter::void_</default></template-type-parameter> 535 <template-type-parameter name="A3"><default>boost::parameter::void_</default></template-type-parameter> 536 <template-type-parameter name="A4"><default>boost::parameter::void_</default></template-type-parameter> 537 <template-type-parameter name="A5"><default>boost::parameter::void_</default></template-type-parameter> 538 <template-type-parameter name="A6"><default>boost::parameter::void_</default></template-type-parameter> 539 </template><typedef name="value_type"><type>T</type></typedef> 540<typedef name="value_compare"><type>base_maker::compare_argument</type></typedef> 541<typedef name="allocator_type"><type>base_maker::allocator_type</type></typedef> 542<typedef name="node"><type>base_maker::node_type</type></typedef> 543<typedef name="node_pointer"><type>boost::allocator_pointer< allocator_type >::type</type></typedef> 544<typedef name="const_node_pointer"><type>boost::allocator_const_pointer< allocator_type >::type</type></typedef> 545<typedef name="value_extractor"><type><emphasis>unspecified</emphasis></type></typedef> 546<typedef name="child_list_type"><type>boost::array< node_pointer, 2 ></type></typedef> 547<typedef name="child_list_iterator"><type>child_list_type::iterator</type></typedef> 548<typedef name="iterator"><type><emphasis>unspecified</emphasis></type></typedef> 549<typedef name="const_iterator"><type>iterator</type></typedef> 550<typedef name="ordered_iterator"><type><emphasis>unspecified</emphasis></type></typedef> 551<typedef name="reference"><type><emphasis>unspecified</emphasis></type></typedef> 552<typedef name="handle_type"><type><emphasis>unspecified</emphasis></type></typedef> 553</struct><struct name="push_handle"><template> 554 <template-type-parameter name="T"/> 555 <template-type-parameter name="A0"><default>boost::parameter::void_</default></template-type-parameter> 556 <template-type-parameter name="A1"><default>boost::parameter::void_</default></template-type-parameter> 557 <template-type-parameter name="A2"><default>boost::parameter::void_</default></template-type-parameter> 558 <template-type-parameter name="A3"><default>boost::parameter::void_</default></template-type-parameter> 559 <template-type-parameter name="A4"><default>boost::parameter::void_</default></template-type-parameter> 560 <template-type-parameter name="A5"><default>boost::parameter::void_</default></template-type-parameter> 561 <template-type-parameter name="A6"><default>boost::parameter::void_</default></template-type-parameter> 562 </template><method-group name="public static functions"> 563<method name="push" specifiers="static"><type>handle_type</type><parameter name="self"><paramtype><classname>skew_heap</classname> *</paramtype></parameter><parameter name="v"><paramtype>const_reference</paramtype></parameter></method> 564<method name="emplace" specifiers="static"><type>handle_type</type><template> 565 <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter> 566 </template><parameter name="self"><paramtype><classname>skew_heap</classname> *</paramtype></parameter><parameter name="args"><paramtype>Args &&...</paramtype></parameter></method> 567</method-group> 568</struct><struct name="push_void"><template> 569 <template-type-parameter name="T"/> 570 <template-type-parameter name="A0"><default>boost::parameter::void_</default></template-type-parameter> 571 <template-type-parameter name="A1"><default>boost::parameter::void_</default></template-type-parameter> 572 <template-type-parameter name="A2"><default>boost::parameter::void_</default></template-type-parameter> 573 <template-type-parameter name="A3"><default>boost::parameter::void_</default></template-type-parameter> 574 <template-type-parameter name="A4"><default>boost::parameter::void_</default></template-type-parameter> 575 <template-type-parameter name="A5"><default>boost::parameter::void_</default></template-type-parameter> 576 <template-type-parameter name="A6"><default>boost::parameter::void_</default></template-type-parameter> 577 </template><method-group name="public static functions"> 578<method name="push" specifiers="static"><type>void</type><parameter name="self"><paramtype><classname>skew_heap</classname> *</paramtype></parameter><parameter name="v"><paramtype>const_reference</paramtype></parameter></method> 579<method name="emplace" specifiers="static"><type>void</type><template> 580 <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter> 581 </template><parameter name="self"><paramtype><classname>skew_heap</classname> *</paramtype></parameter><parameter name="args"><paramtype>Args &&...</paramtype></parameter></method> 582</method-group> 583</struct><typedef name="value_type"><type>T</type></typedef> 584<typedef name="size_type"><type>implementation_defined::size_type</type></typedef> 585<typedef name="difference_type"><type>implementation_defined::difference_type</type></typedef> 586<typedef name="value_compare"><type>implementation_defined::value_compare</type></typedef> 587<typedef name="allocator_type"><type>implementation_defined::allocator_type</type></typedef> 588<typedef name="reference"><type>implementation_defined::reference</type></typedef> 589<typedef name="const_reference"><type>implementation_defined::const_reference</type></typedef> 590<typedef name="pointer"><type>implementation_defined::pointer</type></typedef> 591<typedef name="const_pointer"><type>implementation_defined::const_pointer</type></typedef> 592<typedef name="iterator"><description><para><emphasis role="bold">Note:</emphasis> The iterator does not traverse the priority queue in order of the priorities. </para></description><type>implementation_defined::iterator</type></typedef> 593<typedef name="const_iterator"><type>implementation_defined::const_iterator</type></typedef> 594<typedef name="ordered_iterator"><type>implementation_defined::ordered_iterator</type></typedef> 595<typedef name="handle_type"><type>boost::conditional< is_mutable, typename implementation_defined::handle_type, void * >::type</type></typedef> 596<data-member name="constant_time_size" specifiers="static"><type>const bool</type></data-member> 597<data-member name="has_ordered_iterators" specifiers="static"><type>const bool</type></data-member> 598<data-member name="is_mergable" specifiers="static"><type>const bool</type></data-member> 599<data-member name="is_stable" specifiers="static"><type>const bool</type></data-member> 600<data-member name="has_reserve" specifiers="static"><type>const bool</type></data-member> 601<data-member name="is_mutable" specifiers="static"><type>const bool</type></data-member> 602<method-group name="public member functions"> 603<method name="push"><type>boost::conditional< is_mutable, handle_type, void >::type</type><parameter name="v"><paramtype>value_type const &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Adds a new element to the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic (amortized). </para></description></method> 604<method name="emplace"><type>boost::conditional< is_mutable, handle_type, void >::type</type><template> 605 <template-nontype-parameter name="Args"><type>typename...</type></template-nontype-parameter> 606 </template><parameter name="args"><paramtype>Args &&...</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Adds a new element to the priority queue. The element is directly constructed in-place.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic (amortized). </para></description></method> 607<method name="empty" cv="const"><type>bool</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns true, if the priority queue contains no elements.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 608<method name="size" cv="const"><type>size_type</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns the number of elements contained in the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant, if configured with constant_time_size<true>, otherwise linear. </para></description></method> 609<method name="max_size" cv="const"><type>size_type</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns the maximum number of elements the priority queue can contain.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 610<method name="clear"><type>void</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Removes all elements from the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Linear. </para></description></method> 611<method name="get_allocator" cv="const"><type>allocator_type</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns allocator.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 612<method name="swap"><type>void</type><parameter name="rhs"><paramtype><classname>skew_heap</classname> &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Swaps two priority queues.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 613<method name="top" cv="const"><type>const_reference</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns a const_reference to the maximum element.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 614<method name="pop"><type>void</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Removes the top element from the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic (amortized). </para></description></method> 615<method name="begin" cv="const"><type>iterator</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns an iterator to the first element contained in the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 616<method name="end" cv="const"><type>iterator</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns an iterator to the end of the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></method> 617<method name="ordered_begin" cv="const"><type>ordered_iterator</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns an ordered iterator to the first element contained in the priority queue.</para><para><emphasis role="bold">Note:</emphasis> Ordered iterators traverse the priority queue in heap order. </para></description></method> 618<method name="ordered_end" cv="const"><type>ordered_iterator</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Returns an ordered iterator to the first element contained in the priority queue.</para><para><emphasis role="bold">Note:</emphasis> Ordered iterators traverse the priority queue in heap order. </para></description></method> 619<method name="merge"><type>void</type><parameter name="rhs"><paramtype><classname>skew_heap</classname> &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Merge all elements from rhs into this</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic (amortized). </para></description></method> 620<method name="value_comp" cv="const"><type>value_compare const &</type><parameter name=""><paramtype>void</paramtype></parameter><description><para><emphasis role="bold">Effect:</emphasis> Returns the value_compare object used by the priority queue </para></description></method> 621<method name="operator<" cv="const"><type>bool</type><template> 622 <template-type-parameter name="HeapType"/> 623 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><description><para><emphasis role="bold">Returns:</emphasis> Element-wise comparison of heap data structures</para><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 624<method name="operator>" cv="const"><type>bool</type><template> 625 <template-type-parameter name="HeapType"/> 626 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><description><para><emphasis role="bold">Returns:</emphasis> Element-wise comparison of heap data structures</para><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 627<method name="operator>=" cv="const"><type>bool</type><template> 628 <template-type-parameter name="HeapType"/> 629 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><description><para><emphasis role="bold">Returns:</emphasis> Element-wise comparison of heap data structures</para><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 630<method name="operator<=" cv="const"><type>bool</type><template> 631 <template-type-parameter name="HeapType"/> 632 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><description><para><emphasis role="bold">Returns:</emphasis> Element-wise comparison of heap data structures</para><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 633<method name="operator==" cv="const"><type>bool</type><template> 634 <template-type-parameter name="HeapType"/> 635 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><purpose>Equivalent comparison <emphasis role="bold">Returns:</emphasis> True, if both heap data structures are equivalent. </purpose><description><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 636<method name="operator!=" cv="const"><type>bool</type><template> 637 <template-type-parameter name="HeapType"/> 638 </template><parameter name="rhs"><paramtype>HeapType const &</paramtype></parameter><purpose>Equivalent comparison <emphasis role="bold">Returns:</emphasis> True, if both heap data structures are not equivalent. </purpose><description><para><emphasis role="bold">Requirement:</emphasis> the <computeroutput>value_compare</computeroutput> object of both heaps must match. </para></description></method> 639<method name="erase"><type>void</type><parameter name="object"><paramtype>handle_type</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Removes the element handled by <computeroutput>handle</computeroutput> from the <classname alt="boost::heap::priority_queue">priority_queue</classname>.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic (amortized). </para></description></method> 640<method name="update"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><parameter name="v"><paramtype>const_reference</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Assigns <computeroutput>v</computeroutput> to the element handled by <computeroutput>handle</computeroutput> & updates the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic (amortized). </para></description></method> 641<method name="update"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Updates the heap after the element handled by <computeroutput>handle</computeroutput> has been changed.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic (amortized).</para><para><emphasis role="bold">Note:</emphasis> If this is not called, after a handle has been updated, the behavior of the data structure is undefined! </para></description></method> 642<method name="increase"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><parameter name="v"><paramtype>const_reference</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Assigns <computeroutput>v</computeroutput> to the element handled by <computeroutput>handle</computeroutput> & updates the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic (amortized).</para><para><emphasis role="bold">Note:</emphasis> The new value is expected to be greater than the current one </para></description></method> 643<method name="increase"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Updates the heap after the element handled by <computeroutput>handle</computeroutput> has been changed.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic (amortized).</para><para><emphasis role="bold">Note:</emphasis> If this is not called, after a handle has been updated, the behavior of the data structure is undefined! </para></description></method> 644<method name="decrease"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><parameter name="v"><paramtype>const_reference</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Assigns <computeroutput>v</computeroutput> to the element handled by <computeroutput>handle</computeroutput> & updates the priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic (amortized).</para><para><emphasis role="bold">Note:</emphasis> The new value is expected to be less than the current one </para></description></method> 645<method name="decrease"><type>void</type><parameter name="handle"><paramtype>handle_type</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Updates the heap after the element handled by <computeroutput>handle</computeroutput> has been changed.</para><para><emphasis role="bold">Complexity:</emphasis> Logarithmic (amortized).</para><para><emphasis role="bold">Note:</emphasis> The new value is expected to be less than the current one. If this is not called, after a handle has been updated, the behavior of the data structure is undefined! </para></description></method> 646</method-group> 647<constructor specifiers="explicit"><parameter name="cmp"><paramtype>value_compare const &</paramtype><default>value_compare()</default></parameter><description><para><emphasis role="bold">Effects:</emphasis> constructs an empty priority queue.</para><para><emphasis role="bold">Complexity:</emphasis> Constant. </para></description></constructor> 648<constructor><parameter name="rhs"><paramtype><classname>skew_heap</classname> const &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> copy-constructs priority queue from rhs.</para><para><emphasis role="bold">Complexity:</emphasis> Linear. </para></description></constructor> 649<copy-assignment><type><classname>skew_heap</classname> &</type><parameter name="rhs"><paramtype><classname>skew_heap</classname> const &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Assigns priority queue from rhs.</para><para><emphasis role="bold">Complexity:</emphasis> Linear. </para></description></copy-assignment> 650<constructor><parameter name="rhs"><paramtype><classname>skew_heap</classname> &&</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> C++11-style move constructor.</para><para><emphasis role="bold">Complexity:</emphasis> Constant.</para><para><emphasis role="bold">Note:</emphasis> Only available, if BOOST_NO_CXX11_RVALUE_REFERENCES is not defined </para></description></constructor> 651<copy-assignment><type><classname>skew_heap</classname> &</type><parameter name="rhs"><paramtype><classname>skew_heap</classname> &&</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> C++11-style move assignment.</para><para><emphasis role="bold">Complexity:</emphasis> Constant.</para><para><emphasis role="bold">Note:</emphasis> Only available, if BOOST_NO_CXX11_RVALUE_REFERENCES is not defined </para></description></copy-assignment> 652<destructor><parameter name=""><paramtype>void</paramtype></parameter></destructor> 653<method-group name="public static functions"> 654<method name="s_handle_from_iterator" specifiers="static"><type>handle_type</type><parameter name="it"><paramtype>iterator const &</paramtype></parameter><description><para><emphasis role="bold">Effects:</emphasis> Casts an iterator to a node handle.</para><para><emphasis role="bold">Complexity:</emphasis> Constant.</para><para><emphasis role="bold">Requirement:</emphasis> data structure must be configured as mutable </para></description></method> 655</method-group> 656<method-group name="private member functions"> 657<method name="push_internal"><type>node_pointer</type><parameter name="v"><paramtype>const_reference</paramtype></parameter></method> 658<method name="emplace_internal"><type>node_pointer</type><template> 659 <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter> 660 </template><parameter name="args"><paramtype>Args &&...</paramtype></parameter></method> 661<method name="unlink_node"><type>void</type><parameter name="node"><paramtype>node_pointer</paramtype></parameter></method> 662<method name="clone_tree"><type>void</type><parameter name="rhs"><paramtype><classname>skew_heap</classname> const &</paramtype></parameter></method> 663<method name="merge_node"><type>void</type><parameter name="other"><paramtype>node_pointer</paramtype></parameter></method> 664<method name="merge_nodes"><type>node_pointer</type><parameter name="node1"><paramtype>node_pointer</paramtype></parameter><parameter name="node2"><paramtype>node_pointer</paramtype></parameter><parameter name="new_parent"><paramtype>node_pointer</paramtype></parameter></method> 665<method name="merge_children"><type>node_pointer</type><parameter name="node"><paramtype>node_pointer</paramtype></parameter></method> 666<method name="merge_nodes_recursive"><type>node_pointer</type><parameter name="node1"><paramtype>node_pointer</paramtype></parameter><parameter name="node2"><paramtype>node_pointer</paramtype></parameter><parameter name="new_parent"><paramtype>node_pointer</paramtype></parameter></method> 667<method name="sanity_check"><type>void</type><parameter name=""><paramtype>void</paramtype></parameter></method> 668</method-group> 669</class> 670</namespace> 671</namespace> 672</header> 673</library-reference>