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 < 330 class Key, 331 class CloneAllocator = heap_clone_allocator 332 > 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< typename InputIterator > 346 void insert( InputIterator first, InputIterator last ); 347 template< class InputRange > 348 void insert( const InputRange& r ); 349 void erase( iterator position ); 350 size_type erase( const key_type& x ); 351 template< class Range > 352 void erase( const Range& r ); 353 void erase( iterator first, iterator last ); 354 355 public: // <a class="reference" href="#algorithms">algorithms</a> 356 iterator find( const key_type& x ); 357 const_iterator find( const key_type& x ) const; 358 size_type count( const key_type& x ) const; 359 iterator lower_bound( const key_type& x ); 360 const_iterator lower_bound( const key_type& x ) const; 361 iterator upper_bound( const key_type& x ); 362 const_iterator upper_bound( const key_type& x ) const; 363 iterator_range<iterator> equal_range( const key_type& x ); 364 iterator_range<const_iterator> equal_range( const key_type& 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<T></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<</span> <span class="pre">typename</span> <span class="pre">InputIterator</span> <span class="pre">></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<</span> <span class="pre">class</span> <span class="pre">InputRange</span> <span class="pre">></span> 430<span class="pre">void</span> <span class="pre">insert(</span> <span class="pre">const</span> <span class="pre">InputRange&</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&</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<</span> <span class="pre">class</span> <span class="pre">Range</span> <span class="pre">></span> <span class="pre">void</span> <span class="pre">erase(</span> <span class="pre">const</span> <span class="pre">Range&</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> <span class="pre">find(</span> <span class="pre">const</span> <span class="pre">Key&</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&</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&</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> <span class="pre">lower_bound(</span> <span class="pre">const</span> <span class="pre">Key&</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&</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> <span class="pre">upper_bound(</span> <span class="pre">const</span> <span class="pre">Key&</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&</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<iterator></span> <span class="pre">equal_range(</span> <span class="pre">const</span> <span class="pre">Key&</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<const_iterator></span> <span class="pre">equal_range(</span> <span class="pre">const</span> <span class="pre">Key&</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