• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<?xml version="1.0" encoding="utf-8" ?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4<head>
5<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6<meta name="generator" content="Docutils 0.3.10: http://docutils.sourceforge.net/" />
7<title>Boost Pointer Container Library</title>
8<style type="text/css">
9
10/*
11:Author: David Goodger
12:Contact: goodger@users.sourceforge.net
13:Date: $Date$
14:Revision: $Revision$
15:Copyright: This stylesheet has been placed in the public domain.
16
17Default cascading style sheet for the HTML output of Docutils.
18
19See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
20customize this style sheet.
21*/
22
23/* "! important" is used here to override other ``margin-top`` and
24   ``margin-bottom`` styles that are later in the stylesheet or
25   more specific.  See http://www.w3.org/TR/CSS1#the-cascade */
26.first {
27  margin-top: 0 ! important }
28
29.last, .with-subtitle {
30  margin-bottom: 0 ! important }
31
32.hidden {
33  display: none }
34
35a.toc-backref {
36  text-decoration: none ;
37  color: black }
38
39blockquote.epigraph {
40  margin: 2em 5em ; }
41
42dl.docutils dd {
43  margin-bottom: 0.5em }
44
45/* Uncomment (and remove this text!) to get bold-faced definition list terms
46dl.docutils dt {
47  font-weight: bold }
48*/
49
50div.abstract {
51  margin: 2em 5em }
52
53div.abstract p.topic-title {
54  font-weight: bold ;
55  text-align: center }
56
57div.admonition, div.attention, div.caution, div.danger, div.error,
58div.hint, div.important, div.note, div.tip, div.warning {
59  margin: 2em ;
60  border: medium outset ;
61  padding: 1em }
62
63div.admonition p.admonition-title, div.hint p.admonition-title,
64div.important p.admonition-title, div.note p.admonition-title,
65div.tip p.admonition-title {
66  font-weight: bold ;
67  font-family: sans-serif }
68
69div.attention p.admonition-title, div.caution p.admonition-title,
70div.danger p.admonition-title, div.error p.admonition-title,
71div.warning p.admonition-title {
72  color: red ;
73  font-weight: bold ;
74  font-family: sans-serif }
75
76/* Uncomment (and remove this text!) to get reduced vertical space in
77   compound paragraphs.
78div.compound .compound-first, div.compound .compound-middle {
79  margin-bottom: 0.5em }
80
81div.compound .compound-last, div.compound .compound-middle {
82  margin-top: 0.5em }
83*/
84
85div.dedication {
86  margin: 2em 5em ;
87  text-align: center ;
88  font-style: italic }
89
90div.dedication p.topic-title {
91  font-weight: bold ;
92  font-style: normal }
93
94div.figure {
95  margin-left: 2em }
96
97div.footer, div.header {
98  clear: both;
99  font-size: smaller }
100
101div.line-block {
102  display: block ;
103  margin-top: 1em ;
104  margin-bottom: 1em }
105
106div.line-block div.line-block {
107  margin-top: 0 ;
108  margin-bottom: 0 ;
109  margin-left: 1.5em }
110
111div.sidebar {
112  margin-left: 1em ;
113  border: medium outset ;
114  padding: 1em ;
115  background-color: #ffffee ;
116  width: 40% ;
117  float: right ;
118  clear: right }
119
120div.sidebar p.rubric {
121  font-family: sans-serif ;
122  font-size: medium }
123
124div.system-messages {
125  margin: 5em }
126
127div.system-messages h1 {
128  color: red }
129
130div.system-message {
131  border: medium outset ;
132  padding: 1em }
133
134div.system-message p.system-message-title {
135  color: red ;
136  font-weight: bold }
137
138div.topic {
139  margin: 2em }
140
141h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
142h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
143  margin-top: 0.4em }
144
145h1.title {
146  text-align: center }
147
148h2.subtitle {
149  text-align: center }
150
151hr.docutils {
152  width: 75% }
153
154img.align-left {
155  clear: left }
156
157img.align-right {
158  clear: right }
159
160img.borderless {
161  border: 0 }
162
163ol.simple, ul.simple {
164  margin-bottom: 1em }
165
166ol.arabic {
167  list-style: decimal }
168
169ol.loweralpha {
170  list-style: lower-alpha }
171
172ol.upperalpha {
173  list-style: upper-alpha }
174
175ol.lowerroman {
176  list-style: lower-roman }
177
178ol.upperroman {
179  list-style: upper-roman }
180
181p.attribution {
182  text-align: right ;
183  margin-left: 50% }
184
185p.caption {
186  font-style: italic }
187
188p.credits {
189  font-style: italic ;
190  font-size: smaller }
191
192p.label {
193  white-space: nowrap }
194
195p.rubric {
196  font-weight: bold ;
197  font-size: larger ;
198  color: maroon ;
199  text-align: center }
200
201p.sidebar-title {
202  font-family: sans-serif ;
203  font-weight: bold ;
204  font-size: larger }
205
206p.sidebar-subtitle {
207  font-family: sans-serif ;
208  font-weight: bold }
209
210p.topic-title {
211  font-weight: bold }
212
213pre.address {
214  margin-bottom: 0 ;
215  margin-top: 0 ;
216  font-family: serif ;
217  font-size: 100% }
218
219pre.line-block {
220  font-family: serif ;
221  font-size: 100% }
222
223pre.literal-block, pre.doctest-block {
224  margin-left: 2em ;
225  margin-right: 2em ;
226  background-color: #eeeeee }
227
228span.classifier {
229  font-family: sans-serif ;
230  font-style: oblique }
231
232span.classifier-delimiter {
233  font-family: sans-serif ;
234  font-weight: bold }
235
236span.interpreted {
237  font-family: sans-serif }
238
239span.option {
240  white-space: nowrap }
241
242span.pre {
243  white-space: pre }
244
245span.problematic {
246  color: red }
247
248span.section-subtitle {
249  /* font-size relative to parent (h1..h6 element) */
250  font-size: 80% }
251
252table.citation {
253  border-left: solid thin gray }
254
255table.docinfo {
256  margin: 2em 4em }
257
258table.docutils {
259  margin-top: 0.5em ;
260  margin-bottom: 0.5em }
261
262table.footnote {
263  border-left: solid thin black }
264
265table.docutils td, table.docutils th,
266table.docinfo td, table.docinfo th {
267  padding-left: 0.5em ;
268  padding-right: 0.5em ;
269  vertical-align: top }
270
271table.docutils th.field-name, table.docinfo th.docinfo-name {
272  font-weight: bold ;
273  text-align: left ;
274  white-space: nowrap ;
275  padding-left: 0 }
276
277h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
278h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
279  font-size: 100% }
280
281tt.docutils {
282  background-color: #eeeeee }
283
284ul.auto-toc {
285  list-style-type: none }
286
287</style>
288</head>
289<body>
290<div class="document" id="boost-pointer-container-library">
291<h1 class="title"><img alt="Boost" src="boost.png" /> Pointer Container Library</h1>
292<div class="section">
293<h1><a id="class-associative-ptr-container" name="class-associative-ptr-container">Class <tt class="docutils literal"><span class="pre">associative_ptr_container</span></tt></a></h1>
294<p>This section describes all the common operations for all associative
295pointer containers (in addition to <tt class="docutils literal"><span class="pre">reversible_ptr_container</span></tt>).</p>
296<p><strong>Hierarchy:</strong></p>
297<ul class="simple">
298<li><a class="reference" href="reversible_ptr_container.html">reversible_ptr_container</a><ul>
299<li><tt class="docutils literal"><span class="pre">associative_ptr_container</span></tt><ul>
300<li><a class="reference" href="ptr_set_adapter.html">ptr_set_adapter</a></li>
301<li><a class="reference" href="ptr_multiset_adapter.html">ptr_multiset_adapter</a></li>
302<li><a class="reference" href="ptr_map_adapter.html">ptr_map_adapter</a></li>
303<li><a class="reference" href="ptr_multimap_adapter.html">ptr_multi_map_adapter</a><ul>
304<li><a class="reference" href="ptr_set.html">ptr_set</a></li>
305<li><a class="reference" href="ptr_multiset.html">ptr_multi_set</a></li>
306<li><a class="reference" href="ptr_map.html">ptr_map</a></li>
307<li><a class="reference" href="ptr_multimap.html">ptr_multimap</a></li>
308</ul>
309</li>
310</ul>
311</li>
312</ul>
313</li>
314</ul>
315<p><strong>See also:</strong></p>
316<ul class="simple">
317<li><a class="reference" href="http://www.boost.org/libs/range/doc/utility_class.html#iter_range">iterator_range</a></li>
318</ul>
319<p><strong>Navigate:</strong></p>
320<ul class="simple">
321<li><a class="reference" href="ptr_container.html">home</a></li>
322<li><a class="reference" href="reference.html">reference</a></li>
323</ul>
324<p><strong>Synopsis:</strong></p>
325<pre class="literal-block">
326namespace boost
327{
328    template
329    &lt;
330        class Key,
331        class CloneAllocator = heap_clone_allocator
332    &gt;
333    class associative_ptr_container
334    {
335    public: // <a class="reference" href="#typedefs">typedefs</a>
336        typedef ...   key_type;
337        typedef ...   key_compare;
338        typedef ...   value_compare;
339
340    public: // <a class="reference" href="#observers">observers</a>
341        key_compare    key_comp() const;
342        value_compare  value_comp() const;
343
344    public: // <a class="reference" href="#modifiers">modifiers</a>
345        template&lt; typename InputIterator &gt;
346        void       insert( InputIterator first, InputIterator last );
347        template&lt; class InputRange &gt;
348        void       insert( const InputRange&amp; r );
349        void       erase( iterator position );
350        size_type  erase( const key_type&amp; x );
351        template&lt; class Range &gt;
352        void       erase( const Range&amp; r );
353        void       erase( iterator first, iterator last );
354
355    public: // <a class="reference" href="#algorithms">algorithms</a>
356        iterator                        find( const key_type&amp; x );
357        const_iterator                  find( const key_type&amp; x ) const;
358        size_type                       count( const key_type&amp; x ) const;
359        iterator                        lower_bound( const key_type&amp; x );
360        const_iterator                  lower_bound( const key_type&amp; x ) const;
361        iterator                        upper_bound( const key_type&amp; x );
362        const_iterator                  upper_bound( const key_type&amp; x ) const;
363        iterator_range&lt;iterator&gt;        equal_range( const key_type&amp; x );
364        iterator_range&lt;const_iterator&gt;  equal_range( const key_type&amp; x ) const;
365
366    }; //  class 'associative_ptr_container'
367
368} // namespace 'boost'
369</pre>
370</div>
371<div class="section">
372<h1><a id="semantics" name="semantics">Semantics</a></h1>
373<div class="section">
374<h2><a id="semantics-typedefs" name="semantics-typedefs"><span id="typedefs"></span>Semantics: typedefs</a></h2>
375<ul>
376<li><p class="first"><tt class="docutils literal"><span class="pre">typedef</span> <span class="pre">...</span> <span class="pre">key_type;</span></tt></p>
377<blockquote>
378<ul class="simple">
379<li>if we are dealing with a map, then simply the key type</li>
380<li>if we are dealing with a set, then the <em>indirected</em> key type, that is,
381given <tt class="docutils literal"><span class="pre">ptr_set&lt;T&gt;</span></tt>, <tt class="docutils literal"><span class="pre">key_type*</span></tt> will be <tt class="docutils literal"><span class="pre">T*</span></tt>.</li>
382</ul>
383</blockquote>
384</li>
385<li><p class="first"><tt class="docutils literal"><span class="pre">typedef</span> <span class="pre">...</span> <span class="pre">key_compare;</span></tt></p>
386<blockquote>
387<ul class="simple">
388<li>comparison object type that determines the order of elements in the container</li>
389</ul>
390</blockquote>
391</li>
392<li><p class="first"><tt class="docutils literal"><span class="pre">typedef</span> <span class="pre">...</span> <span class="pre">value_compare;</span></tt></p>
393<blockquote>
394<ul class="simple">
395<li>comparison object type that determines the order of elements in the container</li>
396<li>if we are dealing with a map, then this comparison simply forwards to the <tt class="docutils literal"><span class="pre">key_compare</span></tt> comparison operation</li>
397</ul>
398</blockquote>
399</li>
400</ul>
401</div>
402<div class="section">
403<h2><a id="semantics-observers" name="semantics-observers"><span id="observers"></span>Semantics: observers</a></h2>
404<ul>
405<li><p class="first"><tt class="docutils literal"><span class="pre">key_compare</span> <span class="pre">key_comp()</span> <span class="pre">const;</span></tt></p>
406</li>
407<li><p class="first"><tt class="docutils literal"><span class="pre">value_compare</span> <span class="pre">value_comp()</span> <span class="pre">const;</span></tt></p>
408<blockquote>
409<ul class="simple">
410<li>returns copies of objects used to determine the order of elements</li>
411</ul>
412</blockquote>
413</li>
414</ul>
415</div>
416<div class="section">
417<h2><a id="semantics-modifiers" name="semantics-modifiers"><span id="modifiers"></span>Semantics: modifiers</a></h2>
418<ul>
419<li><p class="first"><tt class="docutils literal"><span class="pre">template&lt;</span> <span class="pre">typename</span> <span class="pre">InputIterator</span> <span class="pre">&gt;</span>
420<span class="pre">void</span> <span class="pre">insert(</span> <span class="pre">InputIterator</span> <span class="pre">first,</span> <span class="pre">InputIterator</span> <span class="pre">last</span> <span class="pre">);</span></tt></p>
421<blockquote>
422<ul class="simple">
423<li>Requirements: <tt class="docutils literal"><span class="pre">[first,last)</span></tt> is a valid range</li>
424<li>Effects: Inserts a cloned range</li>
425<li>Exception safety: Basic guarantee</li>
426</ul>
427</blockquote>
428</li>
429<li><p class="first"><tt class="docutils literal"><span class="pre">template&lt;</span> <span class="pre">class</span> <span class="pre">InputRange</span> <span class="pre">&gt;</span>
430<span class="pre">void</span> <span class="pre">insert(</span> <span class="pre">const</span> <span class="pre">InputRange&amp;</span> <span class="pre">r</span> <span class="pre">);</span></tt></p>
431<blockquote>
432<ul class="simple">
433<li>Effects: <tt class="docutils literal"><span class="pre">insert(</span> <span class="pre">boost::begin(r),</span> <span class="pre">boost::end(r)</span> <span class="pre">);</span></tt></li>
434</ul>
435</blockquote>
436</li>
437<li><p class="first"><tt class="docutils literal"><span class="pre">void</span> <span class="pre">erase(</span> <span class="pre">iterator</span> <span class="pre">position</span> <span class="pre">);</span></tt></p>
438<blockquote>
439<ul class="simple">
440<li>Requirements: <tt class="docutils literal"><span class="pre">position</span></tt> is a valid iterator from the container</li>
441<li>Effects: Removes the element defined by <tt class="docutils literal"><span class="pre">position</span></tt>.</li>
442<li>Throws: Nothing</li>
443</ul>
444</blockquote>
445</li>
446<li><p class="first"><tt class="docutils literal"><span class="pre">size_type</span> <span class="pre">erase(</span> <span class="pre">const</span> <span class="pre">key_type&amp;</span> <span class="pre">x</span> <span class="pre">);</span></tt></p>
447<blockquote>
448<ul class="simple">
449<li>Effects: Removes all the elements in the container with a key equivalent to <tt class="docutils literal"><span class="pre">x</span></tt> and returns the number of erased elements.</li>
450<li>Throws: Nothing</li>
451</ul>
452</blockquote>
453</li>
454<li><p class="first"><tt class="docutils literal"><span class="pre">void</span> <span class="pre">erase(</span> <span class="pre">iterator</span> <span class="pre">first,</span> <span class="pre">iterator</span> <span class="pre">last</span> <span class="pre">);</span></tt></p>
455<blockquote>
456<ul class="simple">
457<li>Requirements: <tt class="docutils literal"><span class="pre">[first,last)</span></tt> is a valid range</li>
458<li>Effects: Removes the range of elements defined by <tt class="docutils literal"><span class="pre">[first,last)</span></tt>.</li>
459<li>Throws: Nothing</li>
460</ul>
461</blockquote>
462</li>
463<li><p class="first"><tt class="docutils literal"><span class="pre">template&lt;</span> <span class="pre">class</span> <span class="pre">Range</span> <span class="pre">&gt;</span> <span class="pre">void</span> <span class="pre">erase(</span> <span class="pre">const</span> <span class="pre">Range&amp;</span> <span class="pre">r</span> <span class="pre">);</span></tt></p>
464<blockquote>
465<ul class="simple">
466<li>Effects: <tt class="docutils literal"><span class="pre">erase(</span> <span class="pre">boost::begin(r),</span> <span class="pre">boost::end(r)</span> <span class="pre">);</span></tt></li>
467</ul>
468</blockquote>
469</li>
470</ul>
471</div>
472<div class="section">
473<h2><a id="semantics-algorithms" name="semantics-algorithms"><span id="algorithms"></span>Semantics: algorithms</a></h2>
474<ul>
475<li><p class="first"><tt class="docutils literal"><span class="pre">iterator</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="pre">find(</span> <span class="pre">const</span> <span class="pre">Key&amp;</span> <span class="pre">x</span> <span class="pre">);</span></tt></p>
476</li>
477<li><p class="first"><tt class="docutils literal"><span class="pre">const_iterator</span> <span class="pre">find(</span> <span class="pre">const</span> <span class="pre">Key&amp;</span> <span class="pre">x</span> <span class="pre">)</span> <span class="pre">const;</span></tt></p>
478<blockquote>
479<ul class="simple">
480<li>Effects: Searches for the key and returns <tt class="docutils literal"><span class="pre">end()</span></tt> on failure.</li>
481<li>Complexity: Logarithmic</li>
482</ul>
483</blockquote>
484</li>
485<li><p class="first"><tt class="docutils literal"><span class="pre">size_type</span> <span class="pre">count(</span> <span class="pre">const</span> <span class="pre">Key&amp;</span> <span class="pre">x</span> <span class="pre">)</span> <span class="pre">const;</span></tt></p>
486<blockquote>
487<ul class="simple">
488<li>Effects: Counts the elements with a key equivalent to <tt class="docutils literal"><span class="pre">x</span></tt></li>
489<li>Complexity: Logarithmic</li>
490</ul>
491</blockquote>
492</li>
493<li><p class="first"><tt class="docutils literal"><span class="pre">iterator</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="pre">lower_bound(</span> <span class="pre">const</span> <span class="pre">Key&amp;</span> <span class="pre">x</span> <span class="pre">);</span></tt></p>
494</li>
495<li><p class="first"><tt class="docutils literal"><span class="pre">const_iterator</span> <span class="pre">lower_bound(</span> <span class="pre">const</span> <span class="pre">Key&amp;</span> <span class="pre">x</span> <span class="pre">)</span> <span class="pre">const;</span></tt></p>
496<blockquote>
497<ul class="simple">
498<li>Effects: Returns an iterator pointing to the first element with a key not less than <tt class="docutils literal"><span class="pre">x</span></tt></li>
499<li>Complexity: Logarithmic</li>
500</ul>
501</blockquote>
502</li>
503<li><p class="first"><tt class="docutils literal"><span class="pre">iterator</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="pre">upper_bound(</span> <span class="pre">const</span> <span class="pre">Key&amp;</span> <span class="pre">x</span> <span class="pre">);</span></tt></p>
504</li>
505<li><p class="first"><tt class="docutils literal"><span class="pre">const_iterator</span> <span class="pre">upper_bound(</span> <span class="pre">const</span> <span class="pre">Key&amp;</span> <span class="pre">x</span> <span class="pre">)</span> <span class="pre">const;</span></tt></p>
506<blockquote>
507<ul class="simple">
508<li>Effects: Returns an iterator pointing to the first element with a key greater than <tt class="docutils literal"><span class="pre">x</span></tt></li>
509<li>Complexity: Logarithmic</li>
510</ul>
511</blockquote>
512</li>
513<li><p class="first"><tt class="docutils literal"><span class="pre">iterator_range&lt;iterator&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="pre">equal_range(</span> <span class="pre">const</span> <span class="pre">Key&amp;</span> <span class="pre">x</span> <span class="pre">);</span></tt></p>
514</li>
515<li><p class="first"><tt class="docutils literal"><span class="pre">iterator_range&lt;const_iterator&gt;</span> <span class="pre">equal_range(</span> <span class="pre">const</span> <span class="pre">Key&amp;</span> <span class="pre">x</span> <span class="pre">)</span> <span class="pre">const;</span></tt></p>
516<blockquote>
517<ul class="simple">
518<li>Effects: <tt class="docutils literal"><span class="pre">return</span> <span class="pre">boost::make_iterator_range(</span> <span class="pre">lower_bound(</span> <span class="pre">x</span> <span class="pre">),</span> <span class="pre">upper_bound(</span> <span class="pre">x</span> <span class="pre">)</span> <span class="pre">);</span></tt></li>
519<li>Complexity: Logarithmic</li>
520</ul>
521</blockquote>
522</li>
523</ul>
524<!-- - ``reference       at( const key_type& key );``
525- ``const_reference at( const key_type& key ) const;``
526
527- Requirements: the key exists
528
529- Effects: returns the object with key ``key``
530
531- Throws: ``bad_ptr_container_operation`` if the key does not exist                                  -->
532<hr><table class="docutils field-list" frame="void" rules="none">
533<col class="field-name" />
534<col class="field-body" />
535<tbody valign="top">
536<tr class="field"><th class="field-name">Copyright:</th><td class="field-body">Thorsten Ottosen 2004-2006. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see <a class="reference" href="http://www.boost.org/LICENSE_1_0.txt">LICENSE_1_0.txt</a>).</td>
537</tr>
538</tbody>
539</table>
540</div>
541</div>
542</div>
543</body>
544</html>
545