Imported Upstream version 1.72.0
[platform/upstream/boost.git] / doc / html / boost / intrusive / circular_list_algorithms.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
5 <title>Class template circular_list_algorithms</title>
6 <link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
7 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
8 <link rel="home" href="../../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
9 <link rel="up" href="../../intrusive/reference.html#header.boost.intrusive.circular_list_algorithms_hpp" title="Header &lt;boost/intrusive/circular_list_algorithms.hpp&gt;">
10 <link rel="prev" href="bstree_algorithms.html" title="Class template bstree_algorithms">
11 <link rel="next" href="circular_list_algorithms/stable_partition_info.html" title="Struct stable_partition_info">
12 </head>
13 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table cellpadding="2" width="100%"><tr>
15 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
16 <td align="center"><a href="../../../../index.html">Home</a></td>
17 <td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td>
18 <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
19 <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
20 <td align="center"><a href="../../../../more/index.htm">More</a></td>
21 </tr></table>
22 <hr>
23 <div class="spirit-nav">
24 <a accesskey="p" href="bstree_algorithms.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../intrusive/reference.html#header.boost.intrusive.circular_list_algorithms_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="circular_list_algorithms/stable_partition_info.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
25 </div>
26 <div class="refentry">
27 <a name="boost.intrusive.circular_list_algorithms"></a><div class="titlepage"></div>
28 <div class="refnamediv">
29 <h2><span class="refentrytitle">Class template circular_list_algorithms</span></h2>
30 <p>boost::intrusive::circular_list_algorithms</p>
31 </div>
32 <h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
33 <div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../../intrusive/reference.html#header.boost.intrusive.circular_list_algorithms_hpp" title="Header &lt;boost/intrusive/circular_list_algorithms.hpp&gt;">boost/intrusive/circular_list_algorithms.hpp</a>&gt;
34
35 </span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> NodeTraits<span class="special">&gt;</span> 
36 <span class="keyword">class</span> <a class="link" href="circular_list_algorithms.html" title="Class template circular_list_algorithms">circular_list_algorithms</a> <span class="special">{</span>
37 <span class="keyword">public</span><span class="special">:</span>
38   <span class="comment">// types</span>
39   <span class="keyword">typedef</span> <span class="identifier">NodeTraits</span><span class="special">::</span><span class="identifier">node</span>           <a name="boost.intrusive.circular_list_algorithms.node"></a><span class="identifier">node</span><span class="special">;</span>          
40   <span class="keyword">typedef</span> <span class="identifier">NodeTraits</span><span class="special">::</span><span class="identifier">node_ptr</span>       <a name="boost.intrusive.circular_list_algorithms.node_ptr"></a><span class="identifier">node_ptr</span><span class="special">;</span>      
41   <span class="keyword">typedef</span> <span class="identifier">NodeTraits</span><span class="special">::</span><span class="identifier">const_node_ptr</span> <a name="boost.intrusive.circular_list_algorithms.const_node_ptr"></a><span class="identifier">const_node_ptr</span><span class="special">;</span>
42   <span class="keyword">typedef</span> <span class="identifier">NodeTraits</span>                 <a name="boost.intrusive.circular_list_algorithms.node_traits"></a><span class="identifier">node_traits</span><span class="special">;</span>   
43
44   <span class="comment">// member classes/structs/unions</span>
45
46   <span class="keyword">struct</span> <a class="link" href="circular_list_algorithms/stable_partition_info.html" title="Struct stable_partition_info">stable_partition_info</a> <span class="special">{</span>
47
48     <span class="comment">// public data members</span>
49     <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">num_1st_partition</span><span class="special">;</span>
50     <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">num_2nd_partition</span><span class="special">;</span>
51     <span class="identifier">node_ptr</span> <span class="identifier">beg_2st_partition</span><span class="special">;</span>
52   <span class="special">}</span><span class="special">;</span>
53
54   <span class="comment">// <a class="link" href="circular_list_algorithms.html#idm45581299433104-bb">public static functions</a></span>
55   <span class="keyword">static</span> <span class="keyword">void</span> <a class="link" href="circular_list_algorithms.html#idm45581299432544-bb"><span class="identifier">init</span></a><span class="special">(</span><span class="identifier">node_ptr</span><span class="special">)</span><span class="special">;</span>
56   <span class="keyword">static</span> <span class="keyword">bool</span> <a class="link" href="circular_list_algorithms.html#idm45581299428000-bb"><span class="identifier">inited</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">const_node_ptr</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
57   <span class="keyword">static</span> <span class="keyword">void</span> <a class="link" href="circular_list_algorithms.html#idm45581299423440-bb"><span class="identifier">init_header</span></a><span class="special">(</span><span class="identifier">node_ptr</span><span class="special">)</span><span class="special">;</span>
58   <span class="keyword">static</span> <span class="keyword">bool</span> <a class="link" href="circular_list_algorithms.html#idm45581299418384-bb"><span class="identifier">unique</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">const_node_ptr</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
59   <span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <a class="link" href="circular_list_algorithms.html#idm45581299412640-bb"><span class="identifier">count</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">const_node_ptr</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
60   <span class="keyword">static</span> <span class="identifier">node_ptr</span> <a class="link" href="circular_list_algorithms.html#idm45581299407184-bb"><span class="identifier">unlink</span></a><span class="special">(</span><span class="identifier">node_ptr</span><span class="special">)</span><span class="special">;</span>
61   <span class="keyword">static</span> <span class="keyword">void</span> <a class="link" href="circular_list_algorithms.html#idm45581299401776-bb"><span class="identifier">unlink</span></a><span class="special">(</span><span class="identifier">node_ptr</span><span class="special">,</span> <span class="identifier">node_ptr</span><span class="special">)</span><span class="special">;</span>
62   <span class="keyword">static</span> <span class="keyword">void</span> <a class="link" href="circular_list_algorithms.html#idm45581299395680-bb"><span class="identifier">link_before</span></a><span class="special">(</span><span class="identifier">node_ptr</span><span class="special">,</span> <span class="identifier">node_ptr</span><span class="special">)</span><span class="special">;</span>
63   <span class="keyword">static</span> <span class="keyword">void</span> <a class="link" href="circular_list_algorithms.html#idm45581299389600-bb"><span class="identifier">link_after</span></a><span class="special">(</span><span class="identifier">node_ptr</span><span class="special">,</span> <span class="identifier">node_ptr</span><span class="special">)</span><span class="special">;</span>
64   <span class="keyword">static</span> <span class="keyword">void</span> <a class="link" href="circular_list_algorithms.html#idm45581299383520-bb"><span class="identifier">swap_nodes</span></a><span class="special">(</span><span class="identifier">node_ptr</span><span class="special">,</span> <span class="identifier">node_ptr</span><span class="special">)</span><span class="special">;</span>
65   <span class="keyword">static</span> <span class="keyword">void</span> <a class="link" href="circular_list_algorithms.html#idm45581299377248-bb"><span class="identifier">transfer</span></a><span class="special">(</span><span class="identifier">node_ptr</span><span class="special">,</span> <span class="identifier">node_ptr</span><span class="special">,</span> <span class="identifier">node_ptr</span><span class="special">)</span><span class="special">;</span>
66   <span class="keyword">static</span> <span class="keyword">void</span> <a class="link" href="circular_list_algorithms.html#idm45581299370448-bb"><span class="identifier">transfer</span></a><span class="special">(</span><span class="identifier">node_ptr</span><span class="special">,</span> <span class="identifier">node_ptr</span><span class="special">)</span><span class="special">;</span>
67   <span class="keyword">static</span> <span class="keyword">void</span> <a class="link" href="circular_list_algorithms.html#idm45581299364224-bb"><span class="identifier">reverse</span></a><span class="special">(</span><span class="identifier">node_ptr</span><span class="special">)</span><span class="special">;</span>
68   <span class="keyword">static</span> <span class="keyword">void</span> <a class="link" href="circular_list_algorithms.html#idm45581299359696-bb"><span class="identifier">move_backwards</span></a><span class="special">(</span><span class="identifier">node_ptr</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">)</span><span class="special">;</span>
69   <span class="keyword">static</span> <span class="keyword">void</span> <a class="link" href="circular_list_algorithms.html#idm45581299354448-bb"><span class="identifier">move_forward</span></a><span class="special">(</span><span class="identifier">node_ptr</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">)</span><span class="special">;</span>
70   <span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <a class="link" href="circular_list_algorithms.html#idm45581299349200-bb"><span class="identifier">distance</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">const_node_ptr</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">const_node_ptr</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
71   <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Pred<span class="special">&gt;</span> 
72     <span class="keyword">static</span> <span class="keyword">void</span> <a class="link" href="circular_list_algorithms.html#idm45581299343136-bb"><span class="identifier">stable_partition</span></a><span class="special">(</span><span class="identifier">node_ptr</span><span class="special">,</span> <span class="identifier">node_ptr</span><span class="special">,</span> <span class="identifier">Pred</span><span class="special">,</span> 
73                                  <span class="identifier">stable_partition_info</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
74
75   <span class="comment">// <a class="link" href="circular_list_algorithms.html#idm45581299338256-bb">private static functions</a></span>
76   <span class="keyword">static</span> <span class="keyword">void</span> <a class="link" href="circular_list_algorithms.html#idm45581299337680-bb"><span class="identifier">swap_prev</span></a><span class="special">(</span><span class="identifier">node_ptr</span><span class="special">,</span> <span class="identifier">node_ptr</span><span class="special">)</span><span class="special">;</span>
77   <span class="keyword">static</span> <span class="keyword">void</span> <a class="link" href="circular_list_algorithms.html#idm45581299335184-bb"><span class="identifier">swap_next</span></a><span class="special">(</span><span class="identifier">node_ptr</span><span class="special">,</span> <span class="identifier">node_ptr</span><span class="special">)</span><span class="special">;</span>
78 <span class="special">}</span><span class="special">;</span></pre></div>
79 <div class="refsect1">
80 <a name="id-1.3.20.42.11.3.4"></a><h2>Description</h2>
81 <p><a class="link" href="circular_list_algorithms.html" title="Class template circular_list_algorithms">circular_list_algorithms</a> provides basic algorithms to manipulate nodes forming a circular doubly linked list. An empty circular list is formed by a node whose pointers point to itself.</p>
82 <p><a class="link" href="circular_list_algorithms.html" title="Class template circular_list_algorithms">circular_list_algorithms</a> is configured with a NodeTraits class, which encapsulates the information about the node to be manipulated. NodeTraits must support the following interface:</p>
83 <p><span class="bold"><strong>Typedefs</strong></span>:</p>
84 <p><code class="computeroutput">node</code>: The type of the node that forms the circular list</p>
85 <p><code class="computeroutput">node_ptr</code>: A pointer to a node</p>
86 <p><code class="computeroutput">const_node_ptr</code>: A pointer to a const node</p>
87 <p><span class="bold"><strong>Static functions</strong></span>:</p>
88 <p><code class="computeroutput">static node_ptr get_previous(const_node_ptr n);</code></p>
89 <p><code class="computeroutput">static void set_previous(node_ptr n, node_ptr prev);</code></p>
90 <p><code class="computeroutput">static node_ptr get_next(const_node_ptr n);</code></p>
91 <p><code class="computeroutput">static void set_next(node_ptr n, node_ptr next);</code> </p>
92 <div class="refsect2">
93 <a name="id-1.3.20.42.11.3.4.13"></a><h3>
94 <a name="idm45581299433104-bb"></a><code class="computeroutput">circular_list_algorithms</code> public static functions</h3>
95 <div class="orderedlist"><ol class="orderedlist" type="1">
96 <li class="listitem">
97 <pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <a name="idm45581299432544-bb"></a><span class="identifier">init</span><span class="special">(</span><span class="identifier">node_ptr</span> this_node<span class="special">)</span><span class="special">;</span></pre>
98 <p><span class="bold"><strong>Effects</strong></span>: Constructs an non-used list element, so that inited(this_node) == true</p>
99 <p><span class="bold"><strong>Complexity</strong></span>: Constant</p>
100 <p><span class="bold"><strong>Throws</strong></span>: Nothing. </p>
101 </li>
102 <li class="listitem">
103 <pre class="literallayout"><span class="keyword">static</span> <span class="keyword">bool</span> <a name="idm45581299428000-bb"></a><span class="identifier">inited</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">const_node_ptr</span> <span class="special">&amp;</span> this_node<span class="special">)</span><span class="special">;</span></pre>
104 <p><span class="bold"><strong>Effects</strong></span>: Returns true is "this_node" is in a non-used state as if it was initialized by the "init" function.</p>
105 <p><span class="bold"><strong>Complexity</strong></span>: Constant</p>
106 <p><span class="bold"><strong>Throws</strong></span>: Nothing. </p>
107 </li>
108 <li class="listitem">
109 <pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <a name="idm45581299423440-bb"></a><span class="identifier">init_header</span><span class="special">(</span><span class="identifier">node_ptr</span> this_node<span class="special">)</span><span class="special">;</span></pre>
110 <p><span class="bold"><strong>Effects</strong></span>: Constructs an empty list, making this_node the only node of the circular list: <code class="computeroutput">NodeTraits::get_next(this_node) == NodeTraits::get_previous(this_node) == this_node</code>.</p>
111 <p><span class="bold"><strong>Complexity</strong></span>: Constant</p>
112 <p><span class="bold"><strong>Throws</strong></span>: Nothing. </p>
113 </li>
114 <li class="listitem">
115 <pre class="literallayout"><span class="keyword">static</span> <span class="keyword">bool</span> <a name="idm45581299418384-bb"></a><span class="identifier">unique</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">const_node_ptr</span> <span class="special">&amp;</span> this_node<span class="special">)</span><span class="special">;</span></pre>
116 <p><span class="bold"><strong>Requires</strong></span>: this_node must be in a circular list or be an empty circular list.</p>
117 <p><span class="bold"><strong>Effects</strong></span>: Returns true is "this_node" is the only node of a circular list: <code class="computeroutput">return NodeTraits::get_next(this_node) == this_node</code></p>
118 <p><span class="bold"><strong>Complexity</strong></span>: Constant</p>
119 <p><span class="bold"><strong>Throws</strong></span>: Nothing. </p>
120 </li>
121 <li class="listitem">
122 <pre class="literallayout"><span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <a name="idm45581299412640-bb"></a><span class="identifier">count</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">const_node_ptr</span> <span class="special">&amp;</span> this_node<span class="special">)</span><span class="special">;</span></pre>
123 <p><span class="bold"><strong>Requires</strong></span>: this_node must be in a circular list or be an empty circular list.</p>
124 <p><span class="bold"><strong>Effects</strong></span>: Returns the number of nodes in a circular list. If the circular list is empty, returns 1.</p>
125 <p><span class="bold"><strong>Complexity</strong></span>: Linear</p>
126 <p><span class="bold"><strong>Throws</strong></span>: Nothing. </p>
127 </li>
128 <li class="listitem">
129 <pre class="literallayout"><span class="keyword">static</span> <span class="identifier">node_ptr</span> <a name="idm45581299407184-bb"></a><span class="identifier">unlink</span><span class="special">(</span><span class="identifier">node_ptr</span> this_node<span class="special">)</span><span class="special">;</span></pre>
130 <p><span class="bold"><strong>Requires</strong></span>: this_node must be in a circular list or be an empty circular list.</p>
131 <p><span class="bold"><strong>Effects</strong></span>: Unlinks the node from the circular list.</p>
132 <p><span class="bold"><strong>Complexity</strong></span>: Constant</p>
133 <p><span class="bold"><strong>Throws</strong></span>: Nothing. </p>
134 </li>
135 <li class="listitem">
136 <pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <a name="idm45581299401776-bb"></a><span class="identifier">unlink</span><span class="special">(</span><span class="identifier">node_ptr</span> b<span class="special">,</span> <span class="identifier">node_ptr</span> e<span class="special">)</span><span class="special">;</span></pre>
137 <p><span class="bold"><strong>Requires</strong></span>: b and e must be nodes of the same circular list or an empty range.</p>
138 <p><span class="bold"><strong>Effects</strong></span>: Unlinks the node [b, e) from the circular list.</p>
139 <p><span class="bold"><strong>Complexity</strong></span>: Constant</p>
140 <p><span class="bold"><strong>Throws</strong></span>: Nothing. </p>
141 </li>
142 <li class="listitem">
143 <pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <a name="idm45581299395680-bb"></a><span class="identifier">link_before</span><span class="special">(</span><span class="identifier">node_ptr</span> nxt_node<span class="special">,</span> <span class="identifier">node_ptr</span> this_node<span class="special">)</span><span class="special">;</span></pre>
144 <p><span class="bold"><strong>Requires</strong></span>: nxt_node must be a node of a circular list.</p>
145 <p><span class="bold"><strong>Effects</strong></span>: Links this_node before nxt_node in the circular list.</p>
146 <p><span class="bold"><strong>Complexity</strong></span>: Constant</p>
147 <p><span class="bold"><strong>Throws</strong></span>: Nothing. </p>
148 </li>
149 <li class="listitem">
150 <pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <a name="idm45581299389600-bb"></a><span class="identifier">link_after</span><span class="special">(</span><span class="identifier">node_ptr</span> prev_node<span class="special">,</span> <span class="identifier">node_ptr</span> this_node<span class="special">)</span><span class="special">;</span></pre>
151 <p><span class="bold"><strong>Requires</strong></span>: prev_node must be a node of a circular list.</p>
152 <p><span class="bold"><strong>Effects</strong></span>: Links this_node after prev_node in the circular list.</p>
153 <p><span class="bold"><strong>Complexity</strong></span>: Constant</p>
154 <p><span class="bold"><strong>Throws</strong></span>: Nothing. </p>
155 </li>
156 <li class="listitem">
157 <pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <a name="idm45581299383520-bb"></a><span class="identifier">swap_nodes</span><span class="special">(</span><span class="identifier">node_ptr</span> this_node<span class="special">,</span> <span class="identifier">node_ptr</span> other_node<span class="special">)</span><span class="special">;</span></pre>
158 <p><span class="bold"><strong>Requires</strong></span>: this_node and other_node must be nodes inserted in circular lists or be empty circular lists.</p>
159 <p><span class="bold"><strong>Effects</strong></span>: Swaps the position of the nodes: this_node is inserted in other_nodes position in the second circular list and the other_node is inserted in this_node's position in the first circular list.</p>
160 <p><span class="bold"><strong>Complexity</strong></span>: Constant</p>
161 <p><span class="bold"><strong>Throws</strong></span>: Nothing. </p>
162 </li>
163 <li class="listitem">
164 <pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <a name="idm45581299377248-bb"></a><span class="identifier">transfer</span><span class="special">(</span><span class="identifier">node_ptr</span> p<span class="special">,</span> <span class="identifier">node_ptr</span> b<span class="special">,</span> <span class="identifier">node_ptr</span> e<span class="special">)</span><span class="special">;</span></pre>
165 <p><span class="bold"><strong>Requires</strong></span>: b and e must be nodes of the same circular list or an empty range. and p must be a node of a different circular list or may not be an iterator in <span class="bold"><strong>Effects</strong></span>: Removes the nodes from [b, e) range from their circular list and inserts them before p in p's circular list.</p>
166 <p><span class="bold"><strong>Complexity</strong></span>: Constant</p>
167 <p><span class="bold"><strong>Throws</strong></span>: Nothing. </p>
168 </li>
169 <li class="listitem">
170 <pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <a name="idm45581299370448-bb"></a><span class="identifier">transfer</span><span class="special">(</span><span class="identifier">node_ptr</span> p<span class="special">,</span> <span class="identifier">node_ptr</span> i<span class="special">)</span><span class="special">;</span></pre>
171 <p><span class="bold"><strong>Requires</strong></span>: i must a node of a circular list and p must be a node of a different circular list.</p>
172 <p><span class="bold"><strong>Effects</strong></span>: Removes the node i from its circular list and inserts it before p in p's circular list. If p == i or p == NodeTraits::get_next(i), this function is a null operation.</p>
173 <p><span class="bold"><strong>Complexity</strong></span>: Constant</p>
174 <p><span class="bold"><strong>Throws</strong></span>: Nothing. </p>
175 </li>
176 <li class="listitem">
177 <pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <a name="idm45581299364224-bb"></a><span class="identifier">reverse</span><span class="special">(</span><span class="identifier">node_ptr</span> p<span class="special">)</span><span class="special">;</span></pre>
178 <p><span class="bold"><strong>Effects</strong></span>: Reverses the order of elements in the list.</p>
179 <p><span class="bold"><strong>Throws</strong></span>: Nothing.</p>
180 <p><span class="bold"><strong>Complexity</strong></span>: This function is linear time. </p>
181 </li>
182 <li class="listitem">
183 <pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <a name="idm45581299359696-bb"></a><span class="identifier">move_backwards</span><span class="special">(</span><span class="identifier">node_ptr</span> p<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> n<span class="special">)</span><span class="special">;</span></pre>
184 <p><span class="bold"><strong>Effects</strong></span>: Moves the node p n positions towards the end of the list.</p>
185 <p><span class="bold"><strong>Throws</strong></span>: Nothing.</p>
186 <p><span class="bold"><strong>Complexity</strong></span>: Linear to the number of moved positions. </p>
187 </li>
188 <li class="listitem">
189 <pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <a name="idm45581299354448-bb"></a><span class="identifier">move_forward</span><span class="special">(</span><span class="identifier">node_ptr</span> p<span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> n<span class="special">)</span><span class="special">;</span></pre>
190 <p><span class="bold"><strong>Effects</strong></span>: Moves the node p n positions towards the beginning of the list.</p>
191 <p><span class="bold"><strong>Throws</strong></span>: Nothing.</p>
192 <p><span class="bold"><strong>Complexity</strong></span>: Linear to the number of moved positions. </p>
193 </li>
194 <li class="listitem">
195 <pre class="literallayout"><span class="keyword">static</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> 
196 <a name="idm45581299349200-bb"></a><span class="identifier">distance</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">const_node_ptr</span> <span class="special">&amp;</span> f<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">const_node_ptr</span> <span class="special">&amp;</span> l<span class="special">)</span><span class="special">;</span></pre>
197 <p><span class="bold"><strong>Requires</strong></span>: f and l must be in a circular list.</p>
198 <p><span class="bold"><strong>Effects</strong></span>: Returns the number of nodes in the range [f, l).</p>
199 <p><span class="bold"><strong>Complexity</strong></span>: Linear</p>
200 <p><span class="bold"><strong>Throws</strong></span>: Nothing. </p>
201 </li>
202 <li class="listitem"><pre class="literallayout"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Pred<span class="special">&gt;</span> 
203   <span class="keyword">static</span> <span class="keyword">void</span> <a name="idm45581299343136-bb"></a><span class="identifier">stable_partition</span><span class="special">(</span><span class="identifier">node_ptr</span> beg<span class="special">,</span> <span class="identifier">node_ptr</span> end<span class="special">,</span> <span class="identifier">Pred</span> pred<span class="special">,</span> 
204                                <span class="identifier">stable_partition_info</span> <span class="special">&amp;</span> info<span class="special">)</span><span class="special">;</span></pre></li>
205 </ol></div>
206 </div>
207 <div class="refsect2">
208 <a name="id-1.3.20.42.11.3.4.14"></a><h3>
209 <a name="idm45581299338256-bb"></a><code class="computeroutput">circular_list_algorithms</code> private static functions</h3>
210 <div class="orderedlist"><ol class="orderedlist" type="1">
211 <li class="listitem"><pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <a name="idm45581299337680-bb"></a><span class="identifier">swap_prev</span><span class="special">(</span><span class="identifier">node_ptr</span> this_node<span class="special">,</span> <span class="identifier">node_ptr</span> other_node<span class="special">)</span><span class="special">;</span></pre></li>
212 <li class="listitem"><pre class="literallayout"><span class="keyword">static</span> <span class="keyword">void</span> <a name="idm45581299335184-bb"></a><span class="identifier">swap_next</span><span class="special">(</span><span class="identifier">node_ptr</span> this_node<span class="special">,</span> <span class="identifier">node_ptr</span> other_node<span class="special">)</span><span class="special">;</span></pre></li>
213 </ol></div>
214 </div>
215 </div>
216 </div>
217 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
218 <td align="left"></td>
219 <td align="right"><div class="copyright-footer">Copyright &#169; 2005 Olaf Krzikalla<br>Copyright &#169; 2006-2015 Ion Gaztanaga<p>
220         Distributed under the Boost Software License, Version 1.0. (See accompanying
221         file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
222       </p>
223 </div></td>
224 </tr></table>
225 <hr>
226 <div class="spirit-nav">
227 <a accesskey="p" href="bstree_algorithms.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../intrusive/reference.html#header.boost.intrusive.circular_list_algorithms_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="circular_list_algorithms/stable_partition_info.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
228 </div>
229 </body>
230 </html>