</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/diagnostics.html#std.diagnostics.exceptions">Exceptions</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/diagnostics.html#std.diagnostics.exceptions.api">API Reference</a></span></dt><dt><spanclass="section"><ahref="manual/diagnostics.html#std.diagnostics.exceptions.data">Adding Data to <codeclass="classname">exception</code></a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/concept_checking.html">Concept Checking</a></span></dt></dl></dd><dt><spanclass="chapter"><ahref="manual/utilities.html">6.
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/diagnostics.html#std.diagnostics.exceptions">Exceptions</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/diagnostics.html#std.diagnostics.exceptions.api">API Reference</a></span></dt><dt><spanclass="section"><ahref="manual/diagnostics.html#std.diagnostics.exceptions.data">Adding Data to <codeclass="classname">exception</code></a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/concept_checking.html">Concept Checking</a></span></dt></dl></dd><dt><spanclass="chapter"><ahref="manual/utilities.html">6.
Utilities
Utilities
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/utilities.html#std.util.functors">Functors</a></span></dt><dt><spanclass="section"><ahref="manual/pairs.html">Pairs</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html">Memory</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/memory.html#std.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/memory.html#allocator.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#allocator.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/memory.html#idm234604985488">Interface Design</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#idm234604981936">Selecting Default Allocation Policy</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#idm234604968640">Disabling Memory Caching</a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/memory.html#auto_ptr.limitations">Limitations</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/memory.html#shared_ptr.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#shared_ptr.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/memory.html#idm234603392608">Class Hierarchy</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#idm234603370096">Thread Safety</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#idm234603362800">Selecting Lock Policy</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#idm234603348176">Related functions and classes</a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/memory.html#shared_ptr.using">Use</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/memory.html#idm234603331760">Examples</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#idm234603328176">Unresolved Issues</a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/memory.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="manual/traits.html">Traits</a></span></dt></dl></dd><dt><spanclass="chapter"><ahref="manual/strings.html">7.
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/utilities.html#std.util.functors">Functors</a></span></dt><dt><spanclass="section"><ahref="manual/pairs.html">Pairs</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html">Memory</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/memory.html#std.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/memory.html#allocator.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#allocator.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/memory.html#idm269891950848">Interface Design</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#idm269891947296">Selecting Default Allocation Policy</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#idm269891934000">Disabling Memory Caching</a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/memory.html#auto_ptr.limitations">Limitations</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/memory.html#shared_ptr.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#shared_ptr.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/memory.html#idm269891814224">Class Hierarchy</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#idm269891791712">Thread Safety</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#idm269891784416">Selecting Lock Policy</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#idm269891769792">Related functions and classes</a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/memory.html#shared_ptr.using">Use</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/memory.html#idm269891753440">Examples</a></span></dt><dt><spanclass="section"><ahref="manual/memory.html#idm269891749856">Unresolved Issues</a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/memory.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="manual/traits.html">Traits</a></span></dt></dl></dd><dt><spanclass="chapter"><ahref="manual/strings.html">7.
Strings
Strings
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/strings.html#std.strings.string">String Classes</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/strings.html#strings.string.simple">Simple Transformations</a></span></dt><dt><spanclass="section"><ahref="manual/strings.html#strings.string.case">Case Sensitivity</a></span></dt><dt><spanclass="section"><ahref="manual/strings.html#strings.string.character_types">Arbitrary Character Types</a></span></dt><dt><spanclass="section"><ahref="manual/strings.html#strings.string.token">Tokenizing</a></span></dt><dt><spanclass="section"><ahref="manual/strings.html#strings.string.shrink">Shrink to Fit</a></span></dt><dt><spanclass="section"><ahref="manual/strings.html#strings.string.Cstring">CString (MFC)</a></span></dt></dl></dd></dl></dd><dt><spanclass="chapter"><ahref="manual/localization.html">8.
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/strings.html#std.strings.string">String Classes</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/strings.html#strings.string.simple">Simple Transformations</a></span></dt><dt><spanclass="section"><ahref="manual/strings.html#strings.string.case">Case Sensitivity</a></span></dt><dt><spanclass="section"><ahref="manual/strings.html#strings.string.character_types">Arbitrary Character Types</a></span></dt><dt><spanclass="section"><ahref="manual/strings.html#strings.string.token">Tokenizing</a></span></dt><dt><spanclass="section"><ahref="manual/strings.html#strings.string.shrink">Shrink to Fit</a></span></dt><dt><spanclass="section"><ahref="manual/strings.html#strings.string.Cstring">CString (MFC)</a></span></dt></dl></dd></dl></dd><dt><spanclass="chapter"><ahref="manual/localization.html">8.
Localization
Localization
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/localization.html#std.localization.locales.locale">locale</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/localization.html#locales.locale.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="manual/localization.html#locales.locale.design">Design</a></span></dt><dt><spanclass="section"><ahref="manual/localization.html#locales.locale.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/localization.html#locale.impl.c">Interacting with "C" locales</a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/localization.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="manual/facets.html">Facets</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/facets.html#std.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/facets.html#facet.ctype.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/facets.html#idm234603126096">Specializations</a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/facets.html#facet.codecvt.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="manual/facets.html#facet.codecvt.design">Design</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/facets.html#codecvt.design.wchar_t_size"><spanclass="type">wchar_t</span> Size</a></span></dt><dt><spanclass="section"><ahref="manual/facets.html#codecvt.design.unicode">Support for Unicode</a></span></dt><dt><spanclass="section"><ahref="manual/facets.html#codecvt.design.issues">Other Issues</a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/facets.html#facet.codecvt.impl">Implementation</a></span></dt><dt><spanclass="section"><ahref="manual/facets.html#facet.codecvt.use">Use</a></span></dt><dt><spanclass="section"><ahref="manual/facets.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/facets.html#manual.localization.facet.messages">messages</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/facets.html#facet.messages.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="manual/facets.html#facet.messages.design">Design</a></span></dt><dt><spanclass="section"><ahref="manual/facets.html#facet.messages.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/facets.html#messages.impl.models">Models</a></span></dt><dt><spanclass="section"><ahref="manual/facets.html#messages.impl.gnu">The GNU Model</a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/facets.html#facet.messages.use">Use</a></span></dt><dt><spanclass="section"><ahref="manual/facets.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></dd><dt><spanclass="chapter"><ahref="manual/containers.html">9.
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/localization.html#std.localization.locales.locale">locale</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/localization.html#locales.locale.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="manual/localization.html#locales.locale.design">Design</a></span></dt><dt><spanclass="section"><ahref="manual/localization.html#locales.locale.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/localization.html#locale.impl.c">Interacting with "C" locales</a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/localization.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="manual/facets.html">Facets</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/facets.html#std.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/facets.html#facet.ctype.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/facets.html#idm269891548288">Specializations</a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/facets.html#facet.codecvt.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="manual/facets.html#facet.codecvt.design">Design</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/facets.html#codecvt.design.wchar_t_size"><spanclass="type">wchar_t</span> Size</a></span></dt><dt><spanclass="section"><ahref="manual/facets.html#codecvt.design.unicode">Support for Unicode</a></span></dt><dt><spanclass="section"><ahref="manual/facets.html#codecvt.design.issues">Other Issues</a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/facets.html#facet.codecvt.impl">Implementation</a></span></dt><dt><spanclass="section"><ahref="manual/facets.html#facet.codecvt.use">Use</a></span></dt><dt><spanclass="section"><ahref="manual/facets.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/facets.html#manual.localization.facet.messages">messages</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/facets.html#facet.messages.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="manual/facets.html#facet.messages.design">Design</a></span></dt><dt><spanclass="section"><ahref="manual/facets.html#facet.messages.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/facets.html#messages.impl.models">Models</a></span></dt><dt><spanclass="section"><ahref="manual/facets.html#messages.impl.gnu">The GNU Model</a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/facets.html#facet.messages.use">Use</a></span></dt><dt><spanclass="section"><ahref="manual/facets.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></dd><dt><spanclass="chapter"><ahref="manual/containers.html">9.
Containers
Containers
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/containers.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/containers.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/containers.html#containers.sequences.vector">vector</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/containers.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="manual/associative.html">Associative</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><spanclass="section"><ahref="manual/associative.html#containers.associative.bitset">bitset</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/associative.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><spanclass="section"><ahref="manual/associative.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="manual/unordered_associative.html">Unordered Associative</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/unordered_associative.html#containers.unordered.insert_hints">Insertion Hints</a></span></dt><dt><spanclass="section"><ahref="manual/unordered_associative.html#containers.unordered.hash">Hash Code</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/unordered_associative.html#containers.unordered.cache">Hash Code Caching Policy</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="manual/containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></dd><dt><spanclass="chapter"><ahref="manual/iterators.html">10.
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/containers.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/containers.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><spanclass="section"><ahref="manual/containers.html#containers.sequences.vector">vector</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/containers.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="manual/associative.html">Associative</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><spanclass="section"><ahref="manual/associative.html#containers.associative.bitset">bitset</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/associative.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><spanclass="section"><ahref="manual/associative.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="manual/unordered_associative.html">Unordered Associative</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/unordered_associative.html#containers.unordered.insert_hints">Insertion Hints</a></span></dt><dt><spanclass="section"><ahref="manual/unordered_associative.html#containers.unordered.hash">Hash Code</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/unordered_associative.html#containers.unordered.cache">Hash Code Caching Policy</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="manual/containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><spanclass="section"><ahref="manual/containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></dd><dt><spanclass="chapter"><ahref="manual/iterators.html">10.
</h2></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="section"><ahref="algorithms.html#std.algorithms.mutating">Mutating</a></span></dt><dd><dl><dt><spanclass="section"><ahref="algorithms.html#algorithms.mutating.swap"><codeclass="function">swap</code></a></span></dt><dd><dl><dt><spanclass="section"><ahref="algorithms.html#algorithms.swap.specializations">Specializations</a></span></dt></dl></dd></dl></dd></dl></div><p>
</h2></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="section"><ahref="algorithms.html#std.algorithms.mutating">Mutating</a></span></dt><dd><dl><dt><spanclass="section"><ahref="algorithms.html#algorithms.mutating.swap"><codeclass="function">swap</code></a></span></dt><dd><dl><dt><spanclass="section"><ahref="algorithms.html#algorithms.swap.specializations">Specializations</a></span></dt></dl></dd></dl></dd></dl></div><p>
The neatest accomplishment of the algorithms section is that all the
The neatest accomplishment of the algorithms section is that all the
work is done via iterators, not containers directly. This means two
work is done via iterators, not containers directly. This means two
@@ -77,11 +77,11 @@ _Alloc_traits</code> have been removed.
...
@@ -77,11 +77,11 @@ _Alloc_traits</code> have been removed.
<spanclass="type">__alloc</span> to select an underlying allocator that
<spanclass="type">__alloc</span> to select an underlying allocator that
satisfied memory allocation requests. The selection of this
satisfied memory allocation requests. The selection of this
underlying allocator was not user-configurable.
underlying allocator was not user-configurable.
</p><divclass="table"><aid="idm234595838080"></a><pclass="title"><strong>Table B.6. Extension Allocators</strong></p><divclass="table-contents"><tablesummary="Extension Allocators"border="1"><colgroup><colalign="left"class="c1"/><colalign="left"class="c2"/><colalign="left"class="c3"/><colalign="left"class="c4"/></colgroup><thead><tr><thalign="left">Allocator (3.4)</th><thalign="left">Header (3.4)</th><thalign="left">Allocator (3.[0-3])</th><thalign="left">Header (3.[0-3])</th></tr></thead><tbody><tr><tdalign="left"><codeclass="classname">__gnu_cxx::new_allocator<T></code></td><tdalign="left"><codeclass="filename">ext/new_allocator.h</code></td><tdalign="left"><codeclass="classname">std::__new_alloc</code></td><tdalign="left"><codeclass="filename">memory</code></td></tr><tr><tdalign="left"><codeclass="classname">__gnu_cxx::malloc_allocator<T></code></td><tdalign="left"><codeclass="filename">ext/malloc_allocator.h</code></td><tdalign="left"><codeclass="classname">std::__malloc_alloc_template<int></code></td><tdalign="left"><codeclass="filename">memory</code></td></tr><tr><tdalign="left"><codeclass="classname">__gnu_cxx::debug_allocator<T></code></td><tdalign="left"><codeclass="filename">ext/debug_allocator.h</code></td><tdalign="left"><codeclass="classname">std::debug_alloc<T></code></td><tdalign="left"><codeclass="filename">memory</code></td></tr><tr><tdalign="left"><codeclass="classname">__gnu_cxx::__pool_alloc<T></code></td><tdalign="left"><codeclass="filename">ext/pool_allocator.h</code></td><tdalign="left"><codeclass="classname">std::__default_alloc_template<bool,int></code></td><tdalign="left"><codeclass="filename">memory</code></td></tr><tr><tdalign="left"><codeclass="classname">__gnu_cxx::__mt_alloc<T></code></td><tdalign="left"><codeclass="filename">ext/mt_allocator.h</code></td><tdalign="left"></td><tdalign="left"></td></tr><tr><tdalign="left"><codeclass="classname">__gnu_cxx::bitmap_allocator<T></code></td><tdalign="left"><codeclass="filename">ext/bitmap_allocator.h</code></td><tdalign="left"></td><tdalign="left"></td></tr></tbody></table></div></div><brclass="table-break"/><p> Releases after gcc-3.4 have continued to add to the collection
</p><divclass="table"><aid="idm269884237408"></a><pclass="title"><strong>Table B.6. Extension Allocators</strong></p><divclass="table-contents"><tablesummary="Extension Allocators"border="1"><colgroup><colalign="left"class="c1"/><colalign="left"class="c2"/><colalign="left"class="c3"/><colalign="left"class="c4"/></colgroup><thead><tr><thalign="left">Allocator (3.4)</th><thalign="left">Header (3.4)</th><thalign="left">Allocator (3.[0-3])</th><thalign="left">Header (3.[0-3])</th></tr></thead><tbody><tr><tdalign="left"><codeclass="classname">__gnu_cxx::new_allocator<T></code></td><tdalign="left"><codeclass="filename">ext/new_allocator.h</code></td><tdalign="left"><codeclass="classname">std::__new_alloc</code></td><tdalign="left"><codeclass="filename">memory</code></td></tr><tr><tdalign="left"><codeclass="classname">__gnu_cxx::malloc_allocator<T></code></td><tdalign="left"><codeclass="filename">ext/malloc_allocator.h</code></td><tdalign="left"><codeclass="classname">std::__malloc_alloc_template<int></code></td><tdalign="left"><codeclass="filename">memory</code></td></tr><tr><tdalign="left"><codeclass="classname">__gnu_cxx::debug_allocator<T></code></td><tdalign="left"><codeclass="filename">ext/debug_allocator.h</code></td><tdalign="left"><codeclass="classname">std::debug_alloc<T></code></td><tdalign="left"><codeclass="filename">memory</code></td></tr><tr><tdalign="left"><codeclass="classname">__gnu_cxx::__pool_alloc<T></code></td><tdalign="left"><codeclass="filename">ext/pool_allocator.h</code></td><tdalign="left"><codeclass="classname">std::__default_alloc_template<bool,int></code></td><tdalign="left"><codeclass="filename">memory</code></td></tr><tr><tdalign="left"><codeclass="classname">__gnu_cxx::__mt_alloc<T></code></td><tdalign="left"><codeclass="filename">ext/mt_allocator.h</code></td><tdalign="left"></td><tdalign="left"></td></tr><tr><tdalign="left"><codeclass="classname">__gnu_cxx::bitmap_allocator<T></code></td><tdalign="left"><codeclass="filename">ext/bitmap_allocator.h</code></td><tdalign="left"></td><tdalign="left"></td></tr></tbody></table></div></div><brclass="table-break"/><p> Releases after gcc-3.4 have continued to add to the collection
of available allocators. All of these new allocators are
of available allocators. All of these new allocators are
standard-style. The following table includes details, along with
standard-style. The following table includes details, along with
the first released version of GCC that included the extension allocator.
the first released version of GCC that included the extension allocator.
</h1></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="section"><ahref="appendix_porting.html#appendix.porting.build_hacking">Configure and Build Hacking</a></span></dt><dd><dl><dt><spanclass="section"><ahref="appendix_porting.html#build_hacking.prereq">Prerequisites</a></span></dt><dt><spanclass="section"><ahref="appendix_porting.html#build_hacking.overview">Overview</a></span></dt><dd><dl><dt><spanclass="section"><ahref="appendix_porting.html#build_hacking.overview.basic">General Process</a></span></dt><dt><spanclass="section"><ahref="appendix_porting.html#build_hacking.overview.map">What Comes from Where</a></span></dt></dl></dd><dt><spanclass="section"><ahref="appendix_porting.html#build_hacking.configure">Configure</a></span></dt><dd><dl><dt><spanclass="section"><ahref="appendix_porting.html#build_hacking.configure.scripts">Storing Information in non-AC files (like configure.host)</a></span></dt><dt><spanclass="section"><ahref="appendix_porting.html#build_hacking.configure.conventions">Coding and Commenting Conventions</a></span></dt><dt><spanclass="section"><ahref="appendix_porting.html#build_hacking.configure.acinclude">The acinclude.m4 layout</a></span></dt><dt><spanclass="section"><ahref="appendix_porting.html#build_hacking.configure.enable"><codeclass="constant">GLIBCXX_ENABLE</code>, the <codeclass="literal">--enable</code> maker</a></span></dt></dl></dd><dt><spanclass="section"><ahref="appendix_porting.html#build_hacking.make">Make</a></span></dt></dl></dd><dt><spanclass="section"><ahref="documentation_hacking.html">Writing and Generating Documentation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="documentation_hacking.html#doc.intro">Introduction</a></span></dt><dt><spanclass="section"><ahref="documentation_hacking.html#doc.generation">Generating Documentation</a></span></dt><dt><spanclass="section"><ahref="documentation_hacking.html#doc.doxygen">Doxygen</a></span></dt><dd><dl><dt><spanclass="section"><ahref="documentation_hacking.html#doxygen.prereq">Prerequisites</a></span></dt><dt><spanclass="section"><ahref="documentation_hacking.html#doxygen.rules">Generating the Doxygen Files</a></span></dt><dt><spanclass="section"><ahref="documentation_hacking.html#doxygen.debug">Debugging Generation</a></span></dt><dt><spanclass="section"><ahref="documentation_hacking.html#doxygen.markup">Markup</a></span></dt></dl></dd><dt><spanclass="section"><ahref="documentation_hacking.html#doc.docbook">Docbook</a></span></dt><dd><dl><dt><spanclass="section"><ahref="documentation_hacking.html#docbook.prereq">Prerequisites</a></span></dt><dt><spanclass="section"><ahref="documentation_hacking.html#docbook.rules">Generating the DocBook Files</a></span></dt><dt><spanclass="section"><ahref="documentation_hacking.html#docbook.debug">Debugging Generation</a></span></dt><dt><spanclass="section"><ahref="documentation_hacking.html#docbook.validation">Editing and Validation</a></span></dt><dt><spanclass="section"><ahref="documentation_hacking.html#docbook.examples">File Organization and Basics</a></span></dt><dt><spanclass="section"><ahref="documentation_hacking.html#docbook.markup">Markup By Example</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="internals.html">Porting to New Hardware or Operating Systems</a></span></dt><dd><dl><dt><spanclass="section"><ahref="internals.html#internals.os">Operating System</a></span></dt><dt><spanclass="section"><ahref="internals.html#internals.cpu">CPU</a></span></dt><dt><spanclass="section"><ahref="internals.html#internals.char_types">Character Types</a></span></dt><dt><spanclass="section"><ahref="internals.html#internals.thread_safety">Thread Safety</a></span></dt><dt><spanclass="section"><ahref="internals.html#internals.numeric_limits">Numeric Limits</a></span></dt><dt><spanclass="section"><ahref="internals.html#internals.libtool">Libtool</a></span></dt></dl></dd><dt><spanclass="section"><ahref="test.html">Test</a></span></dt><dd><dl><dt><spanclass="section"><ahref="test.html#test.organization">Organization</a></span></dt><dd><dl><dt><spanclass="section"><ahref="test.html#test.organization.layout">Directory Layout</a></span></dt><dt><spanclass="section"><ahref="test.html#test.organization.naming">Naming Conventions</a></span></dt></dl></dd><dt><spanclass="section"><ahref="test.html#test.run">Running the Testsuite</a></span></dt><dd><dl><dt><spanclass="section"><ahref="test.html#test.run.basic">Basic</a></span></dt><dt><spanclass="section"><ahref="test.html#test.run.variations">Variations</a></span></dt><dt><spanclass="section"><ahref="test.html#test.run.permutations">Permutations</a></span></dt></dl></dd><dt><spanclass="section"><ahref="test.html#test.new_tests">Writing a new test case</a></span></dt><dt><spanclass="section"><ahref="test.html#test.harness">Test Harness and Utilities</a></span></dt><dd><dl><dt><spanclass="section"><ahref="test.html#test.harness.dejagnu">Dejagnu Harness Details</a></span></dt><dt><spanclass="section"><ahref="test.html#test.harness.utils">Utilities</a></span></dt></dl></dd><dt><spanclass="section"><ahref="test.html#test.special">Special Topics</a></span></dt><dd><dl><dt><spanclass="section"><ahref="test.html#test.exception.safety">
</h1></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="section"><ahref="appendix_porting.html#appendix.porting.build_hacking">Configure and Build Hacking</a></span></dt><dd><dl><dt><spanclass="section"><ahref="appendix_porting.html#build_hacking.prereq">Prerequisites</a></span></dt><dt><spanclass="section"><ahref="appendix_porting.html#build_hacking.overview">Overview</a></span></dt><dd><dl><dt><spanclass="section"><ahref="appendix_porting.html#build_hacking.overview.basic">General Process</a></span></dt><dt><spanclass="section"><ahref="appendix_porting.html#build_hacking.overview.map">What Comes from Where</a></span></dt></dl></dd><dt><spanclass="section"><ahref="appendix_porting.html#build_hacking.configure">Configure</a></span></dt><dd><dl><dt><spanclass="section"><ahref="appendix_porting.html#build_hacking.configure.scripts">Storing Information in non-AC files (like configure.host)</a></span></dt><dt><spanclass="section"><ahref="appendix_porting.html#build_hacking.configure.conventions">Coding and Commenting Conventions</a></span></dt><dt><spanclass="section"><ahref="appendix_porting.html#build_hacking.configure.acinclude">The acinclude.m4 layout</a></span></dt><dt><spanclass="section"><ahref="appendix_porting.html#build_hacking.configure.enable"><codeclass="constant">GLIBCXX_ENABLE</code>, the <codeclass="literal">--enable</code> maker</a></span></dt></dl></dd><dt><spanclass="section"><ahref="appendix_porting.html#build_hacking.make">Make</a></span></dt></dl></dd><dt><spanclass="section"><ahref="documentation_hacking.html">Writing and Generating Documentation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="documentation_hacking.html#doc.intro">Introduction</a></span></dt><dt><spanclass="section"><ahref="documentation_hacking.html#doc.generation">Generating Documentation</a></span></dt><dt><spanclass="section"><ahref="documentation_hacking.html#doc.doxygen">Doxygen</a></span></dt><dd><dl><dt><spanclass="section"><ahref="documentation_hacking.html#doxygen.prereq">Prerequisites</a></span></dt><dt><spanclass="section"><ahref="documentation_hacking.html#doxygen.rules">Generating the Doxygen Files</a></span></dt><dt><spanclass="section"><ahref="documentation_hacking.html#doxygen.debug">Debugging Generation</a></span></dt><dt><spanclass="section"><ahref="documentation_hacking.html#doxygen.markup">Markup</a></span></dt></dl></dd><dt><spanclass="section"><ahref="documentation_hacking.html#doc.docbook">Docbook</a></span></dt><dd><dl><dt><spanclass="section"><ahref="documentation_hacking.html#docbook.prereq">Prerequisites</a></span></dt><dt><spanclass="section"><ahref="documentation_hacking.html#docbook.rules">Generating the DocBook Files</a></span></dt><dt><spanclass="section"><ahref="documentation_hacking.html#docbook.debug">Debugging Generation</a></span></dt><dt><spanclass="section"><ahref="documentation_hacking.html#docbook.validation">Editing and Validation</a></span></dt><dt><spanclass="section"><ahref="documentation_hacking.html#docbook.examples">File Organization and Basics</a></span></dt><dt><spanclass="section"><ahref="documentation_hacking.html#docbook.markup">Markup By Example</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="internals.html">Porting to New Hardware or Operating Systems</a></span></dt><dd><dl><dt><spanclass="section"><ahref="internals.html#internals.os">Operating System</a></span></dt><dt><spanclass="section"><ahref="internals.html#internals.cpu">CPU</a></span></dt><dt><spanclass="section"><ahref="internals.html#internals.char_types">Character Types</a></span></dt><dt><spanclass="section"><ahref="internals.html#internals.thread_safety">Thread Safety</a></span></dt><dt><spanclass="section"><ahref="internals.html#internals.numeric_limits">Numeric Limits</a></span></dt><dt><spanclass="section"><ahref="internals.html#internals.libtool">Libtool</a></span></dt></dl></dd><dt><spanclass="section"><ahref="test.html">Test</a></span></dt><dd><dl><dt><spanclass="section"><ahref="test.html#test.organization">Organization</a></span></dt><dd><dl><dt><spanclass="section"><ahref="test.html#test.organization.layout">Directory Layout</a></span></dt><dt><spanclass="section"><ahref="test.html#test.organization.naming">Naming Conventions</a></span></dt></dl></dd><dt><spanclass="section"><ahref="test.html#test.run">Running the Testsuite</a></span></dt><dd><dl><dt><spanclass="section"><ahref="test.html#test.run.basic">Basic</a></span></dt><dt><spanclass="section"><ahref="test.html#test.run.variations">Variations</a></span></dt><dt><spanclass="section"><ahref="test.html#test.run.permutations">Permutations</a></span></dt></dl></dd><dt><spanclass="section"><ahref="test.html#test.new_tests">Writing a new test case</a></span></dt><dt><spanclass="section"><ahref="test.html#test.harness">Test Harness and Utilities</a></span></dt><dd><dl><dt><spanclass="section"><ahref="test.html#test.harness.dejagnu">Dejagnu Harness Details</a></span></dt><dt><spanclass="section"><ahref="test.html#test.harness.utils">Utilities</a></span></dt></dl></dd><dt><spanclass="section"><ahref="test.html#test.special">Special Topics</a></span></dt><dd><dl><dt><spanclass="section"><ahref="test.html#test.exception.safety">
Qualifying Exception Safety Guarantees
Qualifying Exception Safety Guarantees
...
@@ -61,7 +61,7 @@ make all
...
@@ -61,7 +61,7 @@ make all
in the build directory starts the build process. The <codeclass="literal">all</code> target comes from the <codeclass="filename">Makefile</code> file, which is generated via <spanclass="command"><strong>configure</strong></span> from the <codeclass="filename">Makefile.in</code> file, which is in turn generated (via
in the build directory starts the build process. The <codeclass="literal">all</code> target comes from the <codeclass="filename">Makefile</code> file, which is generated via <spanclass="command"><strong>configure</strong></span> from the <codeclass="filename">Makefile.in</code> file, which is in turn generated (via
<spanclass="command"><strong>automake</strong></span>) from the file
<spanclass="command"><strong>automake</strong></span>) from the file
<codeclass="filename">Makefile.am</code>.
<codeclass="filename">Makefile.am</code>.
</p></div><divclass="section"><divclass="titlepage"><div><div><h4class="title"><aid="build_hacking.overview.map"></a>What Comes from Where</h4></div></div></div><divclass="figure"><aid="idm234596836000"></a><pclass="title"><strong>Figure B.1. Configure and Build File Dependencies</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/confdeps.png"align="middle"alt="Dependency Graph for Configure and Build Files"/></div></div></div><brclass="figure-break"/><p>
</p></div><divclass="section"><divclass="titlepage"><div><div><h4class="title"><aid="build_hacking.overview.map"></a>What Comes from Where</h4></div></div></div><divclass="figure"><aid="idm269885235184"></a><pclass="title"><strong>Figure B.1. Configure and Build File Dependencies</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/confdeps.png"align="middle"alt="Dependency Graph for Configure and Build Files"/></div></div></div><brclass="figure-break"/><p>
Regenerate all generated files by using the command
Regenerate all generated files by using the command
<codeclass="code">autoreconf</code> at the top level of the libstdc++ source
<codeclass="code">autoreconf</code> at the top level of the libstdc++ source
There are a couple of ways to handle this kind of thing. Please
There are a couple of ways to handle this kind of thing. Please
consider all of them before passing judgement. They include, in
consider all of them before passing judgement. They include, in
no chaptericular order:
no particular order:
</p><divclass="itemizedlist"><ulclass="itemizedlist"style="list-style-type: disc; "><liclass="listitem"><p>A very large N in <codeclass="code">bitset<N></code>.</p></li><liclass="listitem"><p>A container<bool>.</p></li><liclass="listitem"><p>Extremely weird solutions.</p></li></ul></div><p>
</p><divclass="itemizedlist"><ulclass="itemizedlist"style="list-style-type: disc; "><liclass="listitem"><p>A very large N in <codeclass="code">bitset<N></code>.</p></li><liclass="listitem"><p>A container<bool>.</p></li><liclass="listitem"><p>Extremely weird solutions.</p></li></ul></div><p>
<spanclass="emphasis"><em>A very large N in
<spanclass="emphasis"><em>A very large N in
<codeclass="code">bitset<N></code>. </em></span> It has been
<codeclass="code">bitset<N></code>. </em></span> It has been
</h2></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="section"><ahref="atomics.html#std.atomics.api">API Reference</a></span></dt></dl></div><p>
</h2></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="section"><ahref="atomics.html#std.atomics.api">API Reference</a></span></dt></dl></div><p>
</p></div></div><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="backwards.third"></a>Third</h3></div></div></div><p> The third generation GNU C++ library is called libstdc++, or
</p></div></div><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="backwards.third"></a>Third</h3></div></div></div><p> The third generation GNU C++ library is called libstdc++, or
libstdc++-v3.
libstdc++-v3.
</p><p>The subset commonly known as the Standard Template Library
</p><p>The subset commonly known as the Standard Template Library
(chapters 23 through 25, mostly) is adapted from the final release
(clauses 23 through 25, mostly) is adapted from the final release
of the SGI STL (version 3.3), with extensive changes.
of the SGI STL (version 3.3), with extensive changes.
</p><p>A more formal description of the V3 goals can be found in the
</p><p>A more formal description of the V3 goals can be found in the
official <aclass="link"href="source_design_notes.html"title="Design Notes">design document</a>.
official <aclass="link"href="source_design_notes.html"title="Design Notes">design document</a>.
</h2></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="section"><ahref="concurrency.html#std.concurrency.api">API Reference</a></span></dt></dl></div><p>
</h2></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="section"><ahref="concurrency.html#std.concurrency.api">API Reference</a></span></dt></dl></div><p>
Facilities for concurrent operation, and control thereof.
Facilities for concurrent operation, and control thereof.
</h2></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="section"><ahref="containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><spanclass="section"><ahref="containers.html#containers.sequences.vector">vector</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="associative.html">Associative</a></span></dt><dd><dl><dt><spanclass="section"><ahref="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><spanclass="section"><ahref="associative.html#containers.associative.bitset">bitset</a></span></dt><dd><dl><dt><spanclass="section"><ahref="associative.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><spanclass="section"><ahref="associative.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="unordered_associative.html">Unordered Associative</a></span></dt><dd><dl><dt><spanclass="section"><ahref="unordered_associative.html#containers.unordered.insert_hints">Insertion Hints</a></span></dt><dt><spanclass="section"><ahref="unordered_associative.html#containers.unordered.hash">Hash Code</a></span></dt><dd><dl><dt><spanclass="section"><ahref="unordered_associative.html#containers.unordered.cache">Hash Code Caching Policy</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></div><divclass="section"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aid="std.containers.sequences"></a>Sequences</h2></div></div></div><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="containers.sequences.list"></a>list</h3></div></div></div><divclass="section"><divclass="titlepage"><div><div><h4class="title"><aid="sequences.list.size"></a>list::size() is O(n)</h4></div></div></div><p>
</h2></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="section"><ahref="containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><spanclass="section"><ahref="containers.html#containers.sequences.vector">vector</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="associative.html">Associative</a></span></dt><dd><dl><dt><spanclass="section"><ahref="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><spanclass="section"><ahref="associative.html#containers.associative.bitset">bitset</a></span></dt><dd><dl><dt><spanclass="section"><ahref="associative.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><spanclass="section"><ahref="associative.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="unordered_associative.html">Unordered Associative</a></span></dt><dd><dl><dt><spanclass="section"><ahref="unordered_associative.html#containers.unordered.insert_hints">Insertion Hints</a></span></dt><dt><spanclass="section"><ahref="unordered_associative.html#containers.unordered.hash">Hash Code</a></span></dt><dd><dl><dt><spanclass="section"><ahref="unordered_associative.html#containers.unordered.cache">Hash Code Caching Policy</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></div><divclass="section"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aid="std.containers.sequences"></a>Sequences</h2></div></div></div><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="containers.sequences.list"></a>list</h3></div></div></div><divclass="section"><divclass="titlepage"><div><div><h4class="title"><aid="sequences.list.size"></a>list::size() is O(n)</h4></div></div></div><p>
Yes it is, and that's okay. This is a decision that we preserved
Yes it is, and that's okay. This is a decision that we preserved
when we imported SGI's STL implementation. The following is
when we imported SGI's STL implementation. The following is
following table provides the names and headers of the debugging
following table provides the names and headers of the debugging
containers:
containers:
</p><divclass="table"><aid="idm234602378400"></a><pclass="title"><strong>Table 17.1. Debugging Containers</strong></p><divclass="table-contents"><tablesummary="Debugging Containers"border="1"><colgroup><colalign="left"class="c1"/><colalign="left"class="c2"/><colalign="left"class="c3"/><colalign="left"class="c4"/></colgroup><thead><tr><thalign="left">Container</th><thalign="left">Header</th><thalign="left">Debug container</th><thalign="left">Debug header</th></tr></thead><tbody><tr><tdalign="left"><codeclass="classname">std::bitset</code></td><tdalign="left"><codeclass="filename">bitset</code></td><tdalign="left"><codeclass="classname">__gnu_debug::bitset</code></td><tdalign="left"><codeclass="filename"><debug/bitset></code></td></tr><tr><tdalign="left"><codeclass="classname">std::deque</code></td><tdalign="left"><codeclass="filename">deque</code></td><tdalign="left"><codeclass="classname">__gnu_debug::deque</code></td><tdalign="left"><codeclass="filename"><debug/deque></code></td></tr><tr><tdalign="left"><codeclass="classname">std::list</code></td><tdalign="left"><codeclass="filename">list</code></td><tdalign="left"><codeclass="classname">__gnu_debug::list</code></td><tdalign="left"><codeclass="filename"><debug/list></code></td></tr><tr><tdalign="left"><codeclass="classname">std::map</code></td><tdalign="left"><codeclass="filename">map</code></td><tdalign="left"><codeclass="classname">__gnu_debug::map</code></td><tdalign="left"><codeclass="filename"><debug/map></code></td></tr><tr><tdalign="left"><codeclass="classname">std::multimap</code></td><tdalign="left"><codeclass="filename">map</code></td><tdalign="left"><codeclass="classname">__gnu_debug::multimap</code></td><tdalign="left"><codeclass="filename"><debug/map></code></td></tr><tr><tdalign="left"><codeclass="classname">std::multiset</code></td><tdalign="left"><codeclass="filename">set</code></td><tdalign="left"><codeclass="classname">__gnu_debug::multiset</code></td><tdalign="left"><codeclass="filename"><debug/set></code></td></tr><tr><tdalign="left"><codeclass="classname">std::set</code></td><tdalign="left"><codeclass="filename">set</code></td><tdalign="left"><codeclass="classname">__gnu_debug::set</code></td><tdalign="left"><codeclass="filename"><debug/set></code></td></tr><tr><tdalign="left"><codeclass="classname">std::string</code></td><tdalign="left"><codeclass="filename">string</code></td><tdalign="left"><codeclass="classname">__gnu_debug::string</code></td><tdalign="left"><codeclass="filename"><debug/string></code></td></tr><tr><tdalign="left"><codeclass="classname">std::wstring</code></td><tdalign="left"><codeclass="filename">string</code></td><tdalign="left"><codeclass="classname">__gnu_debug::wstring</code></td><tdalign="left"><codeclass="filename"><debug/string></code></td></tr><tr><tdalign="left"><codeclass="classname">std::basic_string</code></td><tdalign="left"><codeclass="filename">string</code></td><tdalign="left"><codeclass="classname">__gnu_debug::basic_string</code></td><tdalign="left"><codeclass="filename"><debug/string></code></td></tr><tr><tdalign="left"><codeclass="classname">std::vector</code></td><tdalign="left"><codeclass="filename">vector</code></td><tdalign="left"><codeclass="classname">__gnu_debug::vector</code></td><tdalign="left"><codeclass="filename"><debug/vector></code></td></tr></tbody></table></div></div><brclass="table-break"/><p>In addition, when compiling in C++11 mode, these additional
</p><divclass="table"><aid="idm269890777616"></a><pclass="title"><strong>Table 17.1. Debugging Containers</strong></p><divclass="table-contents"><tablesummary="Debugging Containers"border="1"><colgroup><colalign="left"class="c1"/><colalign="left"class="c2"/><colalign="left"class="c3"/><colalign="left"class="c4"/></colgroup><thead><tr><thalign="left">Container</th><thalign="left">Header</th><thalign="left">Debug container</th><thalign="left">Debug header</th></tr></thead><tbody><tr><tdalign="left"><codeclass="classname">std::bitset</code></td><tdalign="left"><codeclass="filename">bitset</code></td><tdalign="left"><codeclass="classname">__gnu_debug::bitset</code></td><tdalign="left"><codeclass="filename"><debug/bitset></code></td></tr><tr><tdalign="left"><codeclass="classname">std::deque</code></td><tdalign="left"><codeclass="filename">deque</code></td><tdalign="left"><codeclass="classname">__gnu_debug::deque</code></td><tdalign="left"><codeclass="filename"><debug/deque></code></td></tr><tr><tdalign="left"><codeclass="classname">std::list</code></td><tdalign="left"><codeclass="filename">list</code></td><tdalign="left"><codeclass="classname">__gnu_debug::list</code></td><tdalign="left"><codeclass="filename"><debug/list></code></td></tr><tr><tdalign="left"><codeclass="classname">std::map</code></td><tdalign="left"><codeclass="filename">map</code></td><tdalign="left"><codeclass="classname">__gnu_debug::map</code></td><tdalign="left"><codeclass="filename"><debug/map></code></td></tr><tr><tdalign="left"><codeclass="classname">std::multimap</code></td><tdalign="left"><codeclass="filename">map</code></td><tdalign="left"><codeclass="classname">__gnu_debug::multimap</code></td><tdalign="left"><codeclass="filename"><debug/map></code></td></tr><tr><tdalign="left"><codeclass="classname">std::multiset</code></td><tdalign="left"><codeclass="filename">set</code></td><tdalign="left"><codeclass="classname">__gnu_debug::multiset</code></td><tdalign="left"><codeclass="filename"><debug/set></code></td></tr><tr><tdalign="left"><codeclass="classname">std::set</code></td><tdalign="left"><codeclass="filename">set</code></td><tdalign="left"><codeclass="classname">__gnu_debug::set</code></td><tdalign="left"><codeclass="filename"><debug/set></code></td></tr><tr><tdalign="left"><codeclass="classname">std::string</code></td><tdalign="left"><codeclass="filename">string</code></td><tdalign="left"><codeclass="classname">__gnu_debug::string</code></td><tdalign="left"><codeclass="filename"><debug/string></code></td></tr><tr><tdalign="left"><codeclass="classname">std::wstring</code></td><tdalign="left"><codeclass="filename">string</code></td><tdalign="left"><codeclass="classname">__gnu_debug::wstring</code></td><tdalign="left"><codeclass="filename"><debug/string></code></td></tr><tr><tdalign="left"><codeclass="classname">std::basic_string</code></td><tdalign="left"><codeclass="filename">string</code></td><tdalign="left"><codeclass="classname">__gnu_debug::basic_string</code></td><tdalign="left"><codeclass="filename"><debug/string></code></td></tr><tr><tdalign="left"><codeclass="classname">std::vector</code></td><tdalign="left"><codeclass="filename">vector</code></td><tdalign="left"><codeclass="classname">__gnu_debug::vector</code></td><tdalign="left"><codeclass="filename"><debug/vector></code></td></tr></tbody></table></div></div><brclass="table-break"/><p>In addition, when compiling in C++11 mode, these additional
</h2></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="section"><ahref="diagnostics.html#std.diagnostics.exceptions">Exceptions</a></span></dt><dd><dl><dt><spanclass="section"><ahref="diagnostics.html#std.diagnostics.exceptions.api">API Reference</a></span></dt><dt><spanclass="section"><ahref="diagnostics.html#std.diagnostics.exceptions.data">Adding Data to <codeclass="classname">exception</code></a></span></dt></dl></dd><dt><spanclass="section"><ahref="concept_checking.html">Concept Checking</a></span></dt></dl></div><divclass="section"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aid="std.diagnostics.exceptions"></a>Exceptions</h2></div></div></div><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="std.diagnostics.exceptions.api"></a>API Reference</h3></div></div></div><p>
</h2></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="section"><ahref="diagnostics.html#std.diagnostics.exceptions">Exceptions</a></span></dt><dd><dl><dt><spanclass="section"><ahref="diagnostics.html#std.diagnostics.exceptions.api">API Reference</a></span></dt><dt><spanclass="section"><ahref="diagnostics.html#std.diagnostics.exceptions.data">Adding Data to <codeclass="classname">exception</code></a></span></dt></dl></dd><dt><spanclass="section"><ahref="concept_checking.html">Concept Checking</a></span></dt></dl></div><divclass="section"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aid="std.diagnostics.exceptions"></a>Exceptions</h2></div></div></div><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="std.diagnostics.exceptions.api"></a>API Reference</h3></div></div></div><p>
All exception objects are defined in one of the standard header
All exception objects are defined in one of the standard header
An incomplete reference for HTML to Docbook conversion is
An incomplete reference for HTML to Docbook conversion is
detailed in the table below.
detailed in the table below.
</p><divclass="table"><aid="idm234596536320"></a><pclass="title"><strong>Table B.4. HTML to Docbook XML Markup Comparison</strong></p><divclass="table-contents"><tablesummary="HTML to Docbook XML Markup Comparison"border="1"><colgroup><colalign="left"class="c1"/><colalign="left"class="c2"/></colgroup><thead><tr><thalign="left">HTML</th><thalign="left">Docbook</th></tr></thead><tbody><tr><tdalign="left"><p></td><tdalign="left"><para></td></tr><tr><tdalign="left"><pre></td><tdalign="left"><computeroutput>, <programlisting>,
</p><divclass="table"><aid="idm269884935712"></a><pclass="title"><strong>Table B.4. HTML to Docbook XML Markup Comparison</strong></p><divclass="table-contents"><tablesummary="HTML to Docbook XML Markup Comparison"border="1"><colgroup><colalign="left"class="c1"/><colalign="left"class="c2"/></colgroup><thead><tr><thalign="left">HTML</th><thalign="left">Docbook</th></tr></thead><tbody><tr><tdalign="left"><p></td><tdalign="left"><para></td></tr><tr><tdalign="left"><pre></td><tdalign="left"><computeroutput>, <programlisting>,
And examples of detailed markup for which there are no real HTML
And examples of detailed markup for which there are no real HTML
equivalents are listed in the table below.
equivalents are listed in the table below.
</p><divclass="table"><aid="idm234596512176"></a><pclass="title"><strong>Table B.5. Docbook XML Element Use</strong></p><divclass="table-contents"><tablesummary="Docbook XML Element Use"border="1"><colgroup><colalign="left"class="c1"/><colalign="left"class="c2"/></colgroup><thead><tr><thalign="left">Element</th><thalign="left">Use</th></tr></thead><tbody><tr><tdalign="left"><structname></td><tdalign="left"><structname>char_traits</structname></td></tr><tr><tdalign="left"><classname></td><tdalign="left"><classname>string</classname></td></tr><tr><tdalign="left"><function></td><tdalign="left">
</p><divclass="table"><aid="idm269884911568"></a><pclass="title"><strong>Table B.5. Docbook XML Element Use</strong></p><divclass="table-contents"><tablesummary="Docbook XML Element Use"border="1"><colgroup><colalign="left"class="c1"/><colalign="left"class="c2"/></colgroup><thead><tr><thalign="left">Element</th><thalign="left">Use</th></tr></thead><tbody><tr><tdalign="left"><structname></td><tdalign="left"><structname>char_traits</structname></td></tr><tr><tdalign="left"><classname></td><tdalign="left"><classname>string</classname></td></tr><tr><tdalign="left"><function></td><tdalign="left">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv="Content-Type"content="text/html; charset=UTF-8"/><title></title><metaname="generator"content="DocBook XSL-NS Stylesheets V1.78.1"/><metaname="keywords"content="ISO C++, library"/><metaname="keywords"content="ISO C++, runtime, library"/><linkrel="home"href="../index.html"title="The GNU C++ Library"/><linkrel="up"href="extensions.html"title="Part III. Extensions"/><linkrel="prev"href="extensions.html"title="Part III. Extensions"/><linkrel="next"href="ext_compile_checks.html"title="Chapter 16. Compile Time Checks"/></head><body><divclass="navheader"><tablewidth="100%"summary="Navigation header"><tr><thcolspan="3"align="center"></th></tr><tr><tdwidth="20%"align="left"><aaccesskey="p"href="extensions.html">Prev</a></td><thwidth="60%"align="center">Part III.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv="Content-Type"content="text/html; charset=UTF-8"/><title></title><metaname="generator"content="DocBook XSL-NS Stylesheets V1.78.1"/><metaname="keywords"content="ISO C++, library"/><metaname="keywords"content="ISO C++, runtime, library"/><linkrel="home"href="../index.html"title="The GNU C++ Library"/><linkrel="up"href="extensions.html"title="Part III. Extensions"/><linkrel="prev"href="extensions.html"title="Part III. Extensions"/><linkrel="next"href="ext_compile_checks.html"title="Chapter 16. Compile Time Checks"/></head><body><divclass="navheader"><tablewidth="100%"summary="Navigation header"><tr><thcolspan="3"align="center"></th></tr><tr><tdwidth="20%"align="left"><aaccesskey="p"href="extensions.html">Prev</a></td><thwidth="60%"align="center">Part III.
</th></tr><tr><tdwidth="20%"align="left"><aaccesskey="p"href="io_and_c.html">Prev</a></td><thwidth="60%"align="center">The GNU C++ Library Manual</th><tdwidth="20%"align="right"><aaccesskey="n"href="ext_preface.html">Next</a></td></tr></table><hr/></div><divclass="part"><divclass="titlepage"><div><div><h1class="title"><aid="manual.ext"></a>Part III.
</th></tr><tr><tdwidth="20%"align="left"><aaccesskey="p"href="io_and_c.html">Prev</a></td><thwidth="60%"align="center">The GNU C++ Library Manual</th><tdwidth="20%"align="right"><aaccesskey="n"href="ext_preface.html">Next</a></td></tr></table><hr/></div><divclass="part"><divclass="titlepage"><div><div><h1class="title"><aid="manual.ext"></a>Part III.
Extensions
Extensions
<aid="idm234602445088"class="indexterm"></a>
<aid="idm269890844320"class="indexterm"></a>
</h1></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="preface"><ahref="ext_preface.html"></a></span></dt><dt><spanclass="chapter"><ahref="ext_compile_checks.html">16. Compile Time Checks</a></span></dt><dt><spanclass="chapter"><ahref="debug_mode.html">17. Debug Mode</a></span></dt><dd><dl><dt><spanclass="section"><ahref="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><spanclass="section"><ahref="debug_mode_semantics.html">Semantics</a></span></dt><dt><spanclass="section"><ahref="debug_mode_using.html">Using</a></span></dt><dd><dl><dt><spanclass="section"><ahref="debug_mode_using.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><spanclass="section"><ahref="debug_mode_using.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><spanclass="section"><ahref="debug_mode_design.html">Design</a></span></dt><dd><dl><dt><spanclass="section"><ahref="debug_mode_design.html#debug_mode.design.goals">Goals</a></span></dt><dt><spanclass="section"><ahref="debug_mode_design.html#debug_mode.design.methods">Methods</a></span></dt><dd><dl><dt><spanclass="section"><ahref="debug_mode_design.html#debug_mode.design.methods.wrappers">The Wrapper Model</a></span></dt><dd><dl><dt><spanclass="section"><ahref="debug_mode_design.html#debug_mode.design.methods.safe_iter">Safe Iterators</a></span></dt><dt><spanclass="section"><ahref="debug_mode_design.html#debug_mode.design.methods.safe_seq">Safe Sequences (Containers)</a></span></dt></dl></dd><dt><spanclass="section"><ahref="debug_mode_design.html#debug_mode.design.methods.precond">Precondition Checking</a></span></dt><dt><spanclass="section"><ahref="debug_mode_design.html#debug_mode.design.methods.coexistence">Release- and debug-mode coexistence</a></span></dt><dd><dl><dt><spanclass="section"><ahref="debug_mode_design.html#methods.coexistence.compile">Compile-time coexistence of release- and debug-mode components</a></span></dt><dt><spanclass="section"><ahref="debug_mode_design.html#methods.coexistence.link">Link- and run-time coexistence of release- and
</h1></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="preface"><ahref="ext_preface.html"></a></span></dt><dt><spanclass="chapter"><ahref="ext_compile_checks.html">16. Compile Time Checks</a></span></dt><dt><spanclass="chapter"><ahref="debug_mode.html">17. Debug Mode</a></span></dt><dd><dl><dt><spanclass="section"><ahref="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><spanclass="section"><ahref="debug_mode_semantics.html">Semantics</a></span></dt><dt><spanclass="section"><ahref="debug_mode_using.html">Using</a></span></dt><dd><dl><dt><spanclass="section"><ahref="debug_mode_using.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><spanclass="section"><ahref="debug_mode_using.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><spanclass="section"><ahref="debug_mode_design.html">Design</a></span></dt><dd><dl><dt><spanclass="section"><ahref="debug_mode_design.html#debug_mode.design.goals">Goals</a></span></dt><dt><spanclass="section"><ahref="debug_mode_design.html#debug_mode.design.methods">Methods</a></span></dt><dd><dl><dt><spanclass="section"><ahref="debug_mode_design.html#debug_mode.design.methods.wrappers">The Wrapper Model</a></span></dt><dd><dl><dt><spanclass="section"><ahref="debug_mode_design.html#debug_mode.design.methods.safe_iter">Safe Iterators</a></span></dt><dt><spanclass="section"><ahref="debug_mode_design.html#debug_mode.design.methods.safe_seq">Safe Sequences (Containers)</a></span></dt></dl></dd><dt><spanclass="section"><ahref="debug_mode_design.html#debug_mode.design.methods.precond">Precondition Checking</a></span></dt><dt><spanclass="section"><ahref="debug_mode_design.html#debug_mode.design.methods.coexistence">Release- and debug-mode coexistence</a></span></dt><dd><dl><dt><spanclass="section"><ahref="debug_mode_design.html#methods.coexistence.compile">Compile-time coexistence of release- and debug-mode components</a></span></dt><dt><spanclass="section"><ahref="debug_mode_design.html#methods.coexistence.link">Link- and run-time coexistence of release- and
debug-mode components</a></span></dt><dt><spanclass="section"><ahref="debug_mode_design.html#methods.coexistence.alt">Alternatives for Coexistence</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="debug_mode_design.html#debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></dd><dt><spanclass="chapter"><ahref="parallel_mode.html">18. Parallel Mode</a></span></dt><dd><dl><dt><spanclass="section"><ahref="parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><spanclass="section"><ahref="parallel_mode_semantics.html">Semantics</a></span></dt><dt><spanclass="section"><ahref="parallel_mode_using.html">Using</a></span></dt><dd><dl><dt><spanclass="section"><ahref="parallel_mode_using.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><spanclass="section"><ahref="parallel_mode_using.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><spanclass="section"><ahref="parallel_mode_using.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><spanclass="section"><ahref="parallel_mode_design.html">Design</a></span></dt><dd><dl><dt><spanclass="section"><ahref="parallel_mode_design.html#parallel_mode.design.intro">Interface Basics</a></span></dt><dt><spanclass="section"><ahref="parallel_mode_design.html#parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dd><dl><dt><spanclass="section"><ahref="parallel_mode_design.html#parallel_mode.design.tuning.omp">Setting up the OpenMP Environment</a></span></dt><dt><spanclass="section"><ahref="parallel_mode_design.html#parallel_mode.design.tuning.compile">Compile Time Switches</a></span></dt><dt><spanclass="section"><ahref="parallel_mode_design.html#parallel_mode.design.tuning.settings">Run Time Settings and Defaults</a></span></dt></dl></dd><dt><spanclass="section"><ahref="parallel_mode_design.html#parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><spanclass="section"><ahref="parallel_mode_test.html">Testing</a></span></dt><dt><spanclass="bibliography"><ahref="parallel_mode.html#parallel_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><spanclass="chapter"><ahref="profile_mode.html">19. Profile Mode</a></span></dt><dd><dl><dt><spanclass="section"><ahref="profile_mode.html#manual.ext.profile_mode.intro">Intro</a></span></dt><dd><dl><dt><spanclass="section"><ahref="profile_mode.html#manual.ext.profile_mode.using">Using the Profile Mode</a></span></dt><dt><spanclass="section"><ahref="profile_mode.html#manual.ext.profile_mode.tuning">Tuning the Profile Mode</a></span></dt></dl></dd><dt><spanclass="section"><ahref="profile_mode_design.html">Design</a></span></dt><dd><dl><dt><spanclass="section"><ahref="profile_mode_design.html#manual.ext.profile_mode.design.wrapper">Wrapper Model</a></span></dt><dt><spanclass="section"><ahref="profile_mode_design.html#manual.ext.profile_mode.design.instrumentation">Instrumentation</a></span></dt><dt><spanclass="section"><ahref="profile_mode_design.html#manual.ext.profile_mode.design.rtlib">Run Time Behavior</a></span></dt><dt><spanclass="section"><ahref="profile_mode_design.html#manual.ext.profile_mode.design.analysis">Analysis and Diagnostics</a></span></dt><dt><spanclass="section"><ahref="profile_mode_design.html#manual.ext.profile_mode.design.cost-model">Cost Model</a></span></dt><dt><spanclass="section"><ahref="profile_mode_design.html#manual.ext.profile_mode.design.reports">Reports</a></span></dt><dt><spanclass="section"><ahref="profile_mode_design.html#manual.ext.profile_mode.design.testing">Testing</a></span></dt></dl></dd><dt><spanclass="section"><ahref="profile_mode_api.html">Extensions for Custom Containers</a></span></dt><dt><spanclass="section"><ahref="profile_mode_cost_model.html">Empirical Cost Model</a></span></dt><dt><spanclass="section"><ahref="profile_mode_impl.html">Implementation Issues</a></span></dt><dd><dl><dt><spanclass="section"><ahref="profile_mode_impl.html#manual.ext.profile_mode.implementation.stack">Stack Traces</a></span></dt><dt><spanclass="section"><ahref="profile_mode_impl.html#manual.ext.profile_mode.implementation.symbols">Symbolization of Instruction Addresses</a></span></dt><dt><spanclass="section"><ahref="profile_mode_impl.html#manual.ext.profile_mode.implementation.concurrency">Concurrency</a></span></dt><dt><spanclass="section"><ahref="profile_mode_impl.html#manual.ext.profile_mode.implementation.stdlib-in-proflib">Using the Standard Library in the Instrumentation Implementation</a></span></dt><dt><spanclass="section"><ahref="profile_mode_impl.html#manual.ext.profile_mode.implementation.malloc-hooks">Malloc Hooks</a></span></dt><dt><spanclass="section"><ahref="profile_mode_impl.html#manual.ext.profile_mode.implementation.construction-destruction">Construction and Destruction of Global Objects</a></span></dt></dl></dd><dt><spanclass="section"><ahref="profile_mode_devel.html">Developer Information</a></span></dt><dd><dl><dt><spanclass="section"><ahref="profile_mode_devel.html#manual.ext.profile_mode.developer.bigpic">Big Picture</a></span></dt><dt><spanclass="section"><ahref="profile_mode_devel.html#manual.ext.profile_mode.developer.howto">How To Add A Diagnostic</a></span></dt></dl></dd><dt><spanclass="section"><ahref="profile_mode_diagnostics.html">Diagnostics</a></span></dt><dd><dl><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.template">Diagnostic Template</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.containers">Containers</a></span></dt><dd><dl><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.hashtable_too_small">Hashtable Too Small</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.hashtable_too_large">Hashtable Too Large</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.inefficient_hash">Inefficient Hash</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.vector_too_small">Vector Too Small</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.vector_too_large">Vector Too Large</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.vector_to_hashtable">Vector to Hashtable</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.hashtable_to_vector">Hashtable to Vector</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.vector_to_list">Vector to List</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.list_to_vector">List to Vector</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.list_to_slist">List to Forward List (Slist)</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.assoc_ord_to_unord">Ordered to Unordered Associative Container</a></span></dt></dl></dd><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.algorithms">Algorithms</a></span></dt><dd><dl><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.algorithms.sort">Sort Algorithm Performance</a></span></dt></dl></dd><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.locality">Data Locality</a></span></dt><dd><dl><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.locality.sw_prefetch">Need Software Prefetch</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.locality.linked">Linked Structure Locality</a></span></dt></dl></dd><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.mthread">Multithreaded Data Access</a></span></dt><dd><dl><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.mthread.ddtest">Data Dependence Violations at Container Level</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.mthread.false_share">False Sharing</a></span></dt></dl></dd><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.statistics">Statistics</a></span></dt></dl></dd><dt><spanclass="bibliography"><ahref="profile_mode.html#profile_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><spanclass="chapter"><ahref="mt_allocator.html">20. The mt_allocator</a></span></dt><dd><dl><dt><spanclass="section"><ahref="mt_allocator.html#allocator.mt.intro">Intro</a></span></dt><dt><spanclass="section"><ahref="mt_allocator_design.html">Design Issues</a></span></dt><dd><dl><dt><spanclass="section"><ahref="mt_allocator_design.html#allocator.mt.overview">Overview</a></span></dt></dl></dd><dt><spanclass="section"><ahref="mt_allocator_impl.html">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="mt_allocator_impl.html#allocator.mt.tune">Tunable Parameters</a></span></dt><dt><spanclass="section"><ahref="mt_allocator_impl.html#allocator.mt.init">Initialization</a></span></dt><dt><spanclass="section"><ahref="mt_allocator_impl.html#allocator.mt.deallocation">Deallocation Notes</a></span></dt></dl></dd><dt><spanclass="section"><ahref="mt_allocator_ex_single.html">Single Thread Example</a></span></dt><dt><spanclass="section"><ahref="mt_allocator_ex_multi.html">Multiple Thread Example</a></span></dt></dl></dd><dt><spanclass="chapter"><ahref="bitmap_allocator.html">21. The bitmap_allocator</a></span></dt><dd><dl><dt><spanclass="section"><ahref="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><spanclass="section"><ahref="bitmap_allocator_impl.html">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="bitmap_allocator_impl.html#bitmap.impl.free_list_store">Free List Store</a></span></dt><dt><spanclass="section"><ahref="bitmap_allocator_impl.html#bitmap.impl.super_block">Super Block</a></span></dt><dt><spanclass="section"><ahref="bitmap_allocator_impl.html#bitmap.impl.super_block_data">Super Block Data Layout</a></span></dt><dt><spanclass="section"><ahref="bitmap_allocator_impl.html#bitmap.impl.max_wasted">Maximum Wasted Percentage</a></span></dt><dt><spanclass="section"><ahref="bitmap_allocator_impl.html#bitmap.impl.allocate"><codeclass="function">allocate</code></a></span></dt><dt><spanclass="section"><ahref="bitmap_allocator_impl.html#bitmap.impl.deallocate"><codeclass="function">deallocate</code></a></span></dt><dt><spanclass="section"><ahref="bitmap_allocator_impl.html#bitmap.impl.questions">Questions</a></span></dt><dd><dl><dt><spanclass="section"><ahref="bitmap_allocator_impl.html#bitmap.impl.question.1">1</a></span></dt><dt><spanclass="section"><ahref="bitmap_allocator_impl.html#bitmap.impl.question.2">2</a></span></dt><dt><spanclass="section"><ahref="bitmap_allocator_impl.html#bitmap.impl.question.3">3</a></span></dt></dl></dd><dt><spanclass="section"><ahref="bitmap_allocator_impl.html#bitmap.impl.locality">Locality</a></span></dt><dt><spanclass="section"><ahref="bitmap_allocator_impl.html#bitmap.impl.grow_policy">Overhead and Grow Policy</a></span></dt></dl></dd></dl></dd><dt><spanclass="chapter"><ahref="policy_data_structures.html">22. Policy-Based Data Structures</a></span></dt><dd><dl><dt><spanclass="section"><ahref="policy_data_structures.html#pbds.intro">Intro</a></span></dt><dd><dl><dt><spanclass="section"><ahref="policy_data_structures.html#pbds.intro.issues">Performance Issues</a></span></dt><dd><dl><dt><spanclass="section"><ahref="policy_data_structures.html#pbds.intro.issues.associative">Associative</a></span></dt><dt><spanclass="section"><ahref="policy_data_structures.html#pbds.intro.issues.priority_queue">Priority Que</a></span></dt></dl></dd><dt><spanclass="section"><ahref="policy_data_structures.html#pbds.intro.motivation">Goals</a></span></dt><dd><dl><dt><spanclass="section"><ahref="policy_data_structures.html#pbds.intro.motivation.associative">Associative</a></span></dt><dd><dl><dt><spanclass="section"><ahref="policy_data_structures.html#motivation.associative.policy">Policy Choices</a></span></dt><dt><spanclass="section"><ahref="policy_data_structures.html#motivation.associative.underlying">Underlying Data Structures</a></span></dt><dt><spanclass="section"><ahref="policy_data_structures.html#motivation.associative.iterators">Iterators</a></span></dt><dt><spanclass="section"><ahref="policy_data_structures.html#motivation.associative.functions">Functional</a></span></dt></dl></dd><dt><spanclass="section"><ahref="policy_data_structures.html#pbds.intro.motivation.priority_queue">Priority Queues</a></span></dt><dd><dl><dt><spanclass="section"><ahref="policy_data_structures.html#motivation.priority_queue.policy">Policy Choices</a></span></dt><dt><spanclass="section"><ahref="policy_data_structures.html#motivation.priority_queue.underlying">Underlying Data Structures</a></span></dt><dt><spanclass="section"><ahref="policy_data_structures.html#motivation.priority_queue.binary_heap">Binary Heaps</a></span></dt></dl></dd></dl></dd></dl></dd><dt><spanclass="section"><ahref="policy_data_structures_using.html">Using</a></span></dt><dd><dl><dt><spanclass="section"><ahref="policy_data_structures_using.html#pbds.using.prereq">Prerequisites</a></span></dt><dt><spanclass="section"><ahref="policy_data_structures_using.html#pbds.using.organization">Organization</a></span></dt><dt><spanclass="section"><ahref="policy_data_structures_using.html#pbds.using.tutorial">Tutorial</a></span></dt><dd><dl><dt><spanclass="section"><ahref="policy_data_structures_using.html#pbds.using.tutorial.basic">Basic Use</a></span></dt><dt><spanclass="section"><ahref="policy_data_structures_using.html#pbds.using.tutorial.configuring">
debug-mode components</a></span></dt><dt><spanclass="section"><ahref="debug_mode_design.html#methods.coexistence.alt">Alternatives for Coexistence</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="debug_mode_design.html#debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></dd><dt><spanclass="chapter"><ahref="parallel_mode.html">18. Parallel Mode</a></span></dt><dd><dl><dt><spanclass="section"><ahref="parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><spanclass="section"><ahref="parallel_mode_semantics.html">Semantics</a></span></dt><dt><spanclass="section"><ahref="parallel_mode_using.html">Using</a></span></dt><dd><dl><dt><spanclass="section"><ahref="parallel_mode_using.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><spanclass="section"><ahref="parallel_mode_using.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><spanclass="section"><ahref="parallel_mode_using.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><spanclass="section"><ahref="parallel_mode_design.html">Design</a></span></dt><dd><dl><dt><spanclass="section"><ahref="parallel_mode_design.html#parallel_mode.design.intro">Interface Basics</a></span></dt><dt><spanclass="section"><ahref="parallel_mode_design.html#parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dd><dl><dt><spanclass="section"><ahref="parallel_mode_design.html#parallel_mode.design.tuning.omp">Setting up the OpenMP Environment</a></span></dt><dt><spanclass="section"><ahref="parallel_mode_design.html#parallel_mode.design.tuning.compile">Compile Time Switches</a></span></dt><dt><spanclass="section"><ahref="parallel_mode_design.html#parallel_mode.design.tuning.settings">Run Time Settings and Defaults</a></span></dt></dl></dd><dt><spanclass="section"><ahref="parallel_mode_design.html#parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><spanclass="section"><ahref="parallel_mode_test.html">Testing</a></span></dt><dt><spanclass="bibliography"><ahref="parallel_mode.html#parallel_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><spanclass="chapter"><ahref="profile_mode.html">19. Profile Mode</a></span></dt><dd><dl><dt><spanclass="section"><ahref="profile_mode.html#manual.ext.profile_mode.intro">Intro</a></span></dt><dd><dl><dt><spanclass="section"><ahref="profile_mode.html#manual.ext.profile_mode.using">Using the Profile Mode</a></span></dt><dt><spanclass="section"><ahref="profile_mode.html#manual.ext.profile_mode.tuning">Tuning the Profile Mode</a></span></dt></dl></dd><dt><spanclass="section"><ahref="profile_mode_design.html">Design</a></span></dt><dd><dl><dt><spanclass="section"><ahref="profile_mode_design.html#manual.ext.profile_mode.design.wrapper">Wrapper Model</a></span></dt><dt><spanclass="section"><ahref="profile_mode_design.html#manual.ext.profile_mode.design.instrumentation">Instrumentation</a></span></dt><dt><spanclass="section"><ahref="profile_mode_design.html#manual.ext.profile_mode.design.rtlib">Run Time Behavior</a></span></dt><dt><spanclass="section"><ahref="profile_mode_design.html#manual.ext.profile_mode.design.analysis">Analysis and Diagnostics</a></span></dt><dt><spanclass="section"><ahref="profile_mode_design.html#manual.ext.profile_mode.design.cost-model">Cost Model</a></span></dt><dt><spanclass="section"><ahref="profile_mode_design.html#manual.ext.profile_mode.design.reports">Reports</a></span></dt><dt><spanclass="section"><ahref="profile_mode_design.html#manual.ext.profile_mode.design.testing">Testing</a></span></dt></dl></dd><dt><spanclass="section"><ahref="profile_mode_api.html">Extensions for Custom Containers</a></span></dt><dt><spanclass="section"><ahref="profile_mode_cost_model.html">Empirical Cost Model</a></span></dt><dt><spanclass="section"><ahref="profile_mode_impl.html">Implementation Issues</a></span></dt><dd><dl><dt><spanclass="section"><ahref="profile_mode_impl.html#manual.ext.profile_mode.implementation.stack">Stack Traces</a></span></dt><dt><spanclass="section"><ahref="profile_mode_impl.html#manual.ext.profile_mode.implementation.symbols">Symbolization of Instruction Addresses</a></span></dt><dt><spanclass="section"><ahref="profile_mode_impl.html#manual.ext.profile_mode.implementation.concurrency">Concurrency</a></span></dt><dt><spanclass="section"><ahref="profile_mode_impl.html#manual.ext.profile_mode.implementation.stdlib-in-proflib">Using the Standard Library in the Instrumentation Implementation</a></span></dt><dt><spanclass="section"><ahref="profile_mode_impl.html#manual.ext.profile_mode.implementation.malloc-hooks">Malloc Hooks</a></span></dt><dt><spanclass="section"><ahref="profile_mode_impl.html#manual.ext.profile_mode.implementation.construction-destruction">Construction and Destruction of Global Objects</a></span></dt></dl></dd><dt><spanclass="section"><ahref="profile_mode_devel.html">Developer Information</a></span></dt><dd><dl><dt><spanclass="section"><ahref="profile_mode_devel.html#manual.ext.profile_mode.developer.bigpic">Big Picture</a></span></dt><dt><spanclass="section"><ahref="profile_mode_devel.html#manual.ext.profile_mode.developer.howto">How To Add A Diagnostic</a></span></dt></dl></dd><dt><spanclass="section"><ahref="profile_mode_diagnostics.html">Diagnostics</a></span></dt><dd><dl><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.template">Diagnostic Template</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.containers">Containers</a></span></dt><dd><dl><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.hashtable_too_small">Hashtable Too Small</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.hashtable_too_large">Hashtable Too Large</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.inefficient_hash">Inefficient Hash</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.vector_too_small">Vector Too Small</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.vector_too_large">Vector Too Large</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.vector_to_hashtable">Vector to Hashtable</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.hashtable_to_vector">Hashtable to Vector</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.vector_to_list">Vector to List</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.list_to_vector">List to Vector</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.list_to_slist">List to Forward List (Slist)</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.assoc_ord_to_unord">Ordered to Unordered Associative Container</a></span></dt></dl></dd><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.algorithms">Algorithms</a></span></dt><dd><dl><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.algorithms.sort">Sort Algorithm Performance</a></span></dt></dl></dd><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.locality">Data Locality</a></span></dt><dd><dl><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.locality.sw_prefetch">Need Software Prefetch</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.locality.linked">Linked Structure Locality</a></span></dt></dl></dd><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.mthread">Multithreaded Data Access</a></span></dt><dd><dl><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.mthread.ddtest">Data Dependence Violations at Container Level</a></span></dt><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.mthread.false_share">False Sharing</a></span></dt></dl></dd><dt><spanclass="section"><ahref="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.statistics">Statistics</a></span></dt></dl></dd><dt><spanclass="bibliography"><ahref="profile_mode.html#profile_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><spanclass="chapter"><ahref="mt_allocator.html">20. The mt_allocator</a></span></dt><dd><dl><dt><spanclass="section"><ahref="mt_allocator.html#allocator.mt.intro">Intro</a></span></dt><dt><spanclass="section"><ahref="mt_allocator_design.html">Design Issues</a></span></dt><dd><dl><dt><spanclass="section"><ahref="mt_allocator_design.html#allocator.mt.overview">Overview</a></span></dt></dl></dd><dt><spanclass="section"><ahref="mt_allocator_impl.html">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="mt_allocator_impl.html#allocator.mt.tune">Tunable Parameters</a></span></dt><dt><spanclass="section"><ahref="mt_allocator_impl.html#allocator.mt.init">Initialization</a></span></dt><dt><spanclass="section"><ahref="mt_allocator_impl.html#allocator.mt.deallocation">Deallocation Notes</a></span></dt></dl></dd><dt><spanclass="section"><ahref="mt_allocator_ex_single.html">Single Thread Example</a></span></dt><dt><spanclass="section"><ahref="mt_allocator_ex_multi.html">Multiple Thread Example</a></span></dt></dl></dd><dt><spanclass="chapter"><ahref="bitmap_allocator.html">21. The bitmap_allocator</a></span></dt><dd><dl><dt><spanclass="section"><ahref="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><spanclass="section"><ahref="bitmap_allocator_impl.html">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="bitmap_allocator_impl.html#bitmap.impl.free_list_store">Free List Store</a></span></dt><dt><spanclass="section"><ahref="bitmap_allocator_impl.html#bitmap.impl.super_block">Super Block</a></span></dt><dt><spanclass="section"><ahref="bitmap_allocator_impl.html#bitmap.impl.super_block_data">Super Block Data Layout</a></span></dt><dt><spanclass="section"><ahref="bitmap_allocator_impl.html#bitmap.impl.max_wasted">Maximum Wasted Percentage</a></span></dt><dt><spanclass="section"><ahref="bitmap_allocator_impl.html#bitmap.impl.allocate"><codeclass="function">allocate</code></a></span></dt><dt><spanclass="section"><ahref="bitmap_allocator_impl.html#bitmap.impl.deallocate"><codeclass="function">deallocate</code></a></span></dt><dt><spanclass="section"><ahref="bitmap_allocator_impl.html#bitmap.impl.questions">Questions</a></span></dt><dd><dl><dt><spanclass="section"><ahref="bitmap_allocator_impl.html#bitmap.impl.question.1">1</a></span></dt><dt><spanclass="section"><ahref="bitmap_allocator_impl.html#bitmap.impl.question.2">2</a></span></dt><dt><spanclass="section"><ahref="bitmap_allocator_impl.html#bitmap.impl.question.3">3</a></span></dt></dl></dd><dt><spanclass="section"><ahref="bitmap_allocator_impl.html#bitmap.impl.locality">Locality</a></span></dt><dt><spanclass="section"><ahref="bitmap_allocator_impl.html#bitmap.impl.grow_policy">Overhead and Grow Policy</a></span></dt></dl></dd></dl></dd><dt><spanclass="chapter"><ahref="policy_data_structures.html">22. Policy-Based Data Structures</a></span></dt><dd><dl><dt><spanclass="section"><ahref="policy_data_structures.html#pbds.intro">Intro</a></span></dt><dd><dl><dt><spanclass="section"><ahref="policy_data_structures.html#pbds.intro.issues">Performance Issues</a></span></dt><dd><dl><dt><spanclass="section"><ahref="policy_data_structures.html#pbds.intro.issues.associative">Associative</a></span></dt><dt><spanclass="section"><ahref="policy_data_structures.html#pbds.intro.issues.priority_queue">Priority Que</a></span></dt></dl></dd><dt><spanclass="section"><ahref="policy_data_structures.html#pbds.intro.motivation">Goals</a></span></dt><dd><dl><dt><spanclass="section"><ahref="policy_data_structures.html#pbds.intro.motivation.associative">Associative</a></span></dt><dd><dl><dt><spanclass="section"><ahref="policy_data_structures.html#motivation.associative.policy">Policy Choices</a></span></dt><dt><spanclass="section"><ahref="policy_data_structures.html#motivation.associative.underlying">Underlying Data Structures</a></span></dt><dt><spanclass="section"><ahref="policy_data_structures.html#motivation.associative.iterators">Iterators</a></span></dt><dt><spanclass="section"><ahref="policy_data_structures.html#motivation.associative.functions">Functional</a></span></dt></dl></dd><dt><spanclass="section"><ahref="policy_data_structures.html#pbds.intro.motivation.priority_queue">Priority Queues</a></span></dt><dd><dl><dt><spanclass="section"><ahref="policy_data_structures.html#motivation.priority_queue.policy">Policy Choices</a></span></dt><dt><spanclass="section"><ahref="policy_data_structures.html#motivation.priority_queue.underlying">Underlying Data Structures</a></span></dt><dt><spanclass="section"><ahref="policy_data_structures.html#motivation.priority_queue.binary_heap">Binary Heaps</a></span></dt></dl></dd></dl></dd></dl></dd><dt><spanclass="section"><ahref="policy_data_structures_using.html">Using</a></span></dt><dd><dl><dt><spanclass="section"><ahref="policy_data_structures_using.html#pbds.using.prereq">Prerequisites</a></span></dt><dt><spanclass="section"><ahref="policy_data_structures_using.html#pbds.using.organization">Organization</a></span></dt><dt><spanclass="section"><ahref="policy_data_structures_using.html#pbds.using.tutorial">Tutorial</a></span></dt><dd><dl><dt><spanclass="section"><ahref="policy_data_structures_using.html#pbds.using.tutorial.basic">Basic Use</a></span></dt><dt><spanclass="section"><ahref="policy_data_structures_using.html#pbds.using.tutorial.configuring">
The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. </span></p></div><divclass="biblioentry"><aid="idm234603088032"></a><p><spanclass="citetitle"><emclass="citetitle">
The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. </span></p></div><divclass="biblioentry"><aid="idm269891510288"></a><p><spanclass="citetitle"><emclass="citetitle">
of them is overloaded: one signature for common default operations,
of them is overloaded: one signature for common default operations,
and a second for fully general operations. Their names are
and a second for fully general operations. Their names are
self-explanatory to anyone who works with numerics on a regular basis:
self-explanatory to anyone who works with numerics on a regular basis:
</p><divclass="itemizedlist"><ulclass="itemizedlist"style="list-style-type: disc; "><liclass="listitem"><p><codeclass="code">accumulate</code></p></li><liclass="listitem"><p><codeclass="code">inner_product</code></p></li><liclass="listitem"><p><codeclass="code">chapterial_sum</code></p></li><liclass="listitem"><p><codeclass="code">adjacent_difference</code></p></li></ul></div><p>Here is a simple example of the two forms of <codeclass="code">accumulate</code>.
</p><divclass="itemizedlist"><ulclass="itemizedlist"style="list-style-type: disc; "><liclass="listitem"><p><codeclass="code">accumulate</code></p></li><liclass="listitem"><p><codeclass="code">inner_product</code></p></li><liclass="listitem"><p><codeclass="code">partial_sum</code></p></li><liclass="listitem"><p><codeclass="code">adjacent_difference</code></p></li></ul></div><p>Here is a simple example of the two forms of <codeclass="code">accumulate</code>.
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="diagnostics.html#std.diagnostics.exceptions">Exceptions</a></span></dt><dd><dl><dt><spanclass="section"><ahref="diagnostics.html#std.diagnostics.exceptions.api">API Reference</a></span></dt><dt><spanclass="section"><ahref="diagnostics.html#std.diagnostics.exceptions.data">Adding Data to <codeclass="classname">exception</code></a></span></dt></dl></dd><dt><spanclass="section"><ahref="concept_checking.html">Concept Checking</a></span></dt></dl></dd><dt><spanclass="chapter"><ahref="utilities.html">6.
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="diagnostics.html#std.diagnostics.exceptions">Exceptions</a></span></dt><dd><dl><dt><spanclass="section"><ahref="diagnostics.html#std.diagnostics.exceptions.api">API Reference</a></span></dt><dt><spanclass="section"><ahref="diagnostics.html#std.diagnostics.exceptions.data">Adding Data to <codeclass="classname">exception</code></a></span></dt></dl></dd><dt><spanclass="section"><ahref="concept_checking.html">Concept Checking</a></span></dt></dl></dd><dt><spanclass="chapter"><ahref="utilities.html">6.
Utilities
Utilities
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="utilities.html#std.util.functors">Functors</a></span></dt><dt><spanclass="section"><ahref="pairs.html">Pairs</a></span></dt><dt><spanclass="section"><ahref="memory.html">Memory</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#std.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#allocator.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><spanclass="section"><ahref="memory.html#allocator.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#idm234604985488">Interface Design</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm234604981936">Selecting Default Allocation Policy</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm234604968640">Disabling Memory Caching</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><spanclass="section"><ahref="memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><spanclass="section"><ahref="memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#auto_ptr.limitations">Limitations</a></span></dt><dt><spanclass="section"><ahref="memory.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#shared_ptr.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="memory.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><spanclass="section"><ahref="memory.html#shared_ptr.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#idm234603392608">Class Hierarchy</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm234603370096">Thread Safety</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm234603362800">Selecting Lock Policy</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm234603348176">Related functions and classes</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#shared_ptr.using">Use</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#idm234603331760">Examples</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm234603328176">Unresolved Issues</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="traits.html">Traits</a></span></dt></dl></dd><dt><spanclass="chapter"><ahref="strings.html">7.
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="utilities.html#std.util.functors">Functors</a></span></dt><dt><spanclass="section"><ahref="pairs.html">Pairs</a></span></dt><dt><spanclass="section"><ahref="memory.html">Memory</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#std.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#allocator.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><spanclass="section"><ahref="memory.html#allocator.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#idm269891950848">Interface Design</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm269891947296">Selecting Default Allocation Policy</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm269891934000">Disabling Memory Caching</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><spanclass="section"><ahref="memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><spanclass="section"><ahref="memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#auto_ptr.limitations">Limitations</a></span></dt><dt><spanclass="section"><ahref="memory.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#shared_ptr.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="memory.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><spanclass="section"><ahref="memory.html#shared_ptr.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#idm269891814224">Class Hierarchy</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm269891791712">Thread Safety</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm269891784416">Selecting Lock Policy</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm269891769792">Related functions and classes</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#shared_ptr.using">Use</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#idm269891753440">Examples</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm269891749856">Unresolved Issues</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="traits.html">Traits</a></span></dt></dl></dd><dt><spanclass="chapter"><ahref="strings.html">7.
Strings
Strings
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="strings.html#std.strings.string">String Classes</a></span></dt><dd><dl><dt><spanclass="section"><ahref="strings.html#strings.string.simple">Simple Transformations</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.case">Case Sensitivity</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.character_types">Arbitrary Character Types</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.token">Tokenizing</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.shrink">Shrink to Fit</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.Cstring">CString (MFC)</a></span></dt></dl></dd></dl></dd><dt><spanclass="chapter"><ahref="localization.html">8.
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="strings.html#std.strings.string">String Classes</a></span></dt><dd><dl><dt><spanclass="section"><ahref="strings.html#strings.string.simple">Simple Transformations</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.case">Case Sensitivity</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.character_types">Arbitrary Character Types</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.token">Tokenizing</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.shrink">Shrink to Fit</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.Cstring">CString (MFC)</a></span></dt></dl></dd></dl></dd><dt><spanclass="chapter"><ahref="localization.html">8.
Localization
Localization
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><spanclass="section"><ahref="localization.html#std.localization.locales.locale">locale</a></span></dt><dd><dl><dt><spanclass="section"><ahref="localization.html#locales.locale.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="localization.html#locales.locale.design">Design</a></span></dt><dt><spanclass="section"><ahref="localization.html#locales.locale.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="localization.html#locale.impl.c">Interacting with "C" locales</a></span></dt></dl></dd><dt><spanclass="section"><ahref="localization.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="facets.html">Facets</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#std.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#facet.ctype.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#idm234603126096">Specializations</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#facet.codecvt.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.codecvt.design">Design</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#codecvt.design.wchar_t_size"><spanclass="type">wchar_t</span> Size</a></span></dt><dt><spanclass="section"><ahref="facets.html#codecvt.design.unicode">Support for Unicode</a></span></dt><dt><spanclass="section"><ahref="facets.html#codecvt.design.issues">Other Issues</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#facet.codecvt.impl">Implementation</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.codecvt.use">Use</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#manual.localization.facet.messages">messages</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#facet.messages.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.messages.design">Design</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.messages.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#messages.impl.models">Models</a></span></dt><dt><spanclass="section"><ahref="facets.html#messages.impl.gnu">The GNU Model</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#facet.messages.use">Use</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></dd><dt><spanclass="chapter"><ahref="containers.html">9.
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><spanclass="section"><ahref="localization.html#std.localization.locales.locale">locale</a></span></dt><dd><dl><dt><spanclass="section"><ahref="localization.html#locales.locale.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="localization.html#locales.locale.design">Design</a></span></dt><dt><spanclass="section"><ahref="localization.html#locales.locale.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="localization.html#locale.impl.c">Interacting with "C" locales</a></span></dt></dl></dd><dt><spanclass="section"><ahref="localization.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="facets.html">Facets</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#std.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#facet.ctype.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#idm269891548288">Specializations</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#facet.codecvt.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.codecvt.design">Design</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#codecvt.design.wchar_t_size"><spanclass="type">wchar_t</span> Size</a></span></dt><dt><spanclass="section"><ahref="facets.html#codecvt.design.unicode">Support for Unicode</a></span></dt><dt><spanclass="section"><ahref="facets.html#codecvt.design.issues">Other Issues</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#facet.codecvt.impl">Implementation</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.codecvt.use">Use</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#manual.localization.facet.messages">messages</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#facet.messages.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.messages.design">Design</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.messages.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#messages.impl.models">Models</a></span></dt><dt><spanclass="section"><ahref="facets.html#messages.impl.gnu">The GNU Model</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#facet.messages.use">Use</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></dd><dt><spanclass="chapter"><ahref="containers.html">9.
Containers
Containers
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><spanclass="section"><ahref="containers.html#containers.sequences.vector">vector</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="associative.html">Associative</a></span></dt><dd><dl><dt><spanclass="section"><ahref="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><spanclass="section"><ahref="associative.html#containers.associative.bitset">bitset</a></span></dt><dd><dl><dt><spanclass="section"><ahref="associative.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><spanclass="section"><ahref="associative.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="unordered_associative.html">Unordered Associative</a></span></dt><dd><dl><dt><spanclass="section"><ahref="unordered_associative.html#containers.unordered.insert_hints">Insertion Hints</a></span></dt><dt><spanclass="section"><ahref="unordered_associative.html#containers.unordered.hash">Hash Code</a></span></dt><dd><dl><dt><spanclass="section"><ahref="unordered_associative.html#containers.unordered.cache">Hash Code Caching Policy</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></dd><dt><spanclass="chapter"><ahref="iterators.html">10.
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><spanclass="section"><ahref="containers.html#containers.sequences.vector">vector</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="associative.html">Associative</a></span></dt><dd><dl><dt><spanclass="section"><ahref="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><spanclass="section"><ahref="associative.html#containers.associative.bitset">bitset</a></span></dt><dd><dl><dt><spanclass="section"><ahref="associative.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><spanclass="section"><ahref="associative.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="unordered_associative.html">Unordered Associative</a></span></dt><dd><dl><dt><spanclass="section"><ahref="unordered_associative.html#containers.unordered.insert_hints">Insertion Hints</a></span></dt><dt><spanclass="section"><ahref="unordered_associative.html#containers.unordered.hash">Hash Code</a></span></dt><dd><dl><dt><spanclass="section"><ahref="unordered_associative.html#containers.unordered.cache">Hash Code Caching Policy</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></dd><dt><spanclass="chapter"><ahref="iterators.html">10.
<acronymclass="acronym">GNU</acronym> General Public License version 3
<acronymclass="acronym">GNU</acronym> General Public License version 3
</a></span></dt><dt><spanclass="appendix"><ahref="appendix_gfdl.html">E. GNU Free Documentation License</a></span></dt></dl></dd></dl></div><divclass="list-of-figures"><p><strong>List of Figures</strong></p><dl><dt>22.1. <ahref="policy_data_structures.html#idm234601255184">Node Invariants</a></dt><dt>22.2. <ahref="policy_data_structures.html#idm234601248528">Underlying Associative Data Structures</a></dt><dt>22.3. <ahref="policy_data_structures.html#idm234601216896">Range Iteration in Different Data Structures</a></dt><dt>22.4. <ahref="policy_data_structures.html#idm234601202048">Point Iteration in Hash Data Structures</a></dt><dt>22.5. <ahref="policy_data_structures.html#idm234601192784">Effect of erase in different underlying data structures</a></dt><dt>22.6. <ahref="policy_data_structures.html#idm234601125200">Underlying Priority Queue Data Structures</a></dt><dt>22.7. <ahref="policy_data_structures_using.html#idm234601062432">Exception Hierarchy</a></dt><dt>22.8. <ahref="policy_data_structures_design.html#idm234600867728">Non-unique Mapping Standard Containers</a></dt><dt>22.9. <ahref="policy_data_structures_design.html#fig.pbds_embedded_lists_2">
</a></span></dt><dt><spanclass="appendix"><ahref="appendix_gfdl.html">E. GNU Free Documentation License</a></span></dt></dl></dd></dl></div><divclass="list-of-figures"><p><strong>List of Figures</strong></p><dl><dt>22.1. <ahref="policy_data_structures.html#idm269889654480">Node Invariants</a></dt><dt>22.2. <ahref="policy_data_structures.html#idm269889647760">Underlying Associative Data Structures</a></dt><dt>22.3. <ahref="policy_data_structures.html#idm269889616064">Range Iteration in Different Data Structures</a></dt><dt>22.4. <ahref="policy_data_structures.html#idm269889601152">Point Iteration in Hash Data Structures</a></dt><dt>22.5. <ahref="policy_data_structures.html#idm269889591888">Effect of erase in different underlying data structures</a></dt><dt>22.6. <ahref="policy_data_structures.html#idm269889524368">Underlying Priority Queue Data Structures</a></dt><dt>22.7. <ahref="policy_data_structures_using.html#idm269889461728">Exception Hierarchy</a></dt><dt>22.8. <ahref="policy_data_structures_design.html#idm269889267280">Non-unique Mapping Standard Containers</a></dt><dt>22.9. <ahref="policy_data_structures_design.html#fig.pbds_embedded_lists_2">
Effect of embedded lists in
Effect of embedded lists in
<codeclass="classname">std::multimap</code>
<codeclass="classname">std::multimap</code>
</a></dt><dt>22.10. <ahref="policy_data_structures_design.html#idm234600844224">Non-unique Mapping Containers</a></dt><dt>22.11. <ahref="policy_data_structures_design.html#idm234600824480">Point Iterator Hierarchy</a></dt><dt>22.12. <ahref="policy_data_structures_design.html#idm234600811200">Invalidation Guarantee Tags Hierarchy</a></dt><dt>22.13. <ahref="policy_data_structures_design.html#idm234600780976">Container Tag Hierarchy</a></dt><dt>22.14. <ahref="policy_data_structures_design.html#idm234600740768">Hash functions, ranged-hash functions, and
</a></dt><dt>22.10. <ahref="policy_data_structures_design.html#idm269889243776">Non-unique Mapping Containers</a></dt><dt>22.11. <ahref="policy_data_structures_design.html#idm269889223968">Point Iterator Hierarchy</a></dt><dt>22.12. <ahref="policy_data_structures_design.html#idm269889210688">Invalidation Guarantee Tags Hierarchy</a></dt><dt>22.13. <ahref="policy_data_structures_design.html#idm269889180448">Container Tag Hierarchy</a></dt><dt>22.14. <ahref="policy_data_structures_design.html#idm269889140368">Hash functions, ranged-hash functions, and
range-hashing functions</a></dt><dt>22.15. <ahref="policy_data_structures_design.html#idm234600676384">Insert hash sequence diagram</a></dt><dt>22.16. <ahref="policy_data_structures_design.html#idm234600669328">Insert hash sequence diagram with a null policy</a></dt><dt>22.17. <ahref="policy_data_structures_design.html#idm234600652512">Hash policy class diagram</a></dt><dt>22.18. <ahref="policy_data_structures_design.html#idm234600633472">Balls and bins</a></dt><dt>22.19. <ahref="policy_data_structures_design.html#idm234600602752">Insert resize sequence diagram</a></dt><dt>22.20. <ahref="policy_data_structures_design.html#idm234600594976">Standard resize policy trigger sequence
range-hashing functions</a></dt><dt>22.15. <ahref="policy_data_structures_design.html#idm269889075936">Insert hash sequence diagram</a></dt><dt>22.16. <ahref="policy_data_structures_design.html#idm269889068880">Insert hash sequence diagram with a null policy</a></dt><dt>22.17. <ahref="policy_data_structures_design.html#idm269889052112">Hash policy class diagram</a></dt><dt>22.18. <ahref="policy_data_structures_design.html#idm269889033008">Balls and bins</a></dt><dt>22.19. <ahref="policy_data_structures_design.html#idm269889002224">Insert resize sequence diagram</a></dt><dt>22.20. <ahref="policy_data_structures_design.html#idm269888994448">Standard resize policy trigger sequence
</a></dt></dl></div></div><divclass="navfooter"><hr/><tablewidth="100%"summary="Navigation footer"><tr><tdwidth="40%"align="left"><aaccesskey="p"href="../index.html">Prev</a></td><tdwidth="20%"align="center"></td><tdwidth="40%"align="right"><aaccesskey="n"href="intro.html">Next</a></td></tr><tr><tdwidth="40%"align="left"valign="top">The GNU C++ Library </td><tdwidth="20%"align="center"><aaccesskey="h"href="../index.html">Home</a></td><tdwidth="40%"align="right"valign="top"> Part I.
</a></dt></dl></div></div><divclass="navfooter"><hr/><tablewidth="100%"summary="Navigation footer"><tr><tdwidth="40%"align="left"><aaccesskey="p"href="../index.html">Prev</a></td><tdwidth="20%"align="center"></td><tdwidth="40%"align="right"><aaccesskey="n"href="intro.html">Next</a></td></tr><tr><tdwidth="40%"align="left"valign="top">The GNU C++ Library </td><tdwidth="20%"align="center"><aaccesskey="h"href="../index.html">Home</a></td><tdwidth="40%"align="right"valign="top"> Part I.
</th></tr><tr><tdwidth="20%"align="left"><aaccesskey="p"href="index.html">Prev</a></td><thwidth="60%"align="center">The GNU C++ Library Manual</th><tdwidth="20%"align="right"><aaccesskey="n"href="status.html">Next</a></td></tr></table><hr/></div><divclass="part"><divclass="titlepage"><div><div><h1class="title"><aid="manual.intro"></a>Part I.
</th></tr><tr><tdwidth="20%"align="left"><aaccesskey="p"href="index.html">Prev</a></td><thwidth="60%"align="center">The GNU C++ Library Manual</th><tdwidth="20%"align="right"><aaccesskey="n"href="status.html">Next</a></td></tr></table><hr/></div><divclass="part"><divclass="titlepage"><div><div><h1class="title"><aid="manual.intro"></a>Part I.
Introduction
Introduction
<aid="idm234610029904"class="indexterm"></a>
<aid="idm269898634240"class="indexterm"></a>
</h1></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="chapter"><ahref="status.html">1. Status</a></span></dt><dd><dl><dt><spanclass="section"><ahref="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><spanclass="section"><ahref="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><spanclass="section"><ahref="status.html#iso.1998.status">Implementation Status</a></span></dt><dt><spanclass="section"><ahref="status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><spanclass="section"><ahref="status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><spanclass="section"><ahref="status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><spanclass="section"><ahref="status.html#status.iso.2014">C++ 2014</a></span></dt><dt><spanclass="section"><ahref="status.html#status.iso.tr1">C++ TR1</a></span></dt><dd><dl><dt><spanclass="section"><ahref="status.html#iso.tr1.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><spanclass="section"><ahref="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt></dl></dd><dt><spanclass="section"><ahref="license.html">License</a></span></dt><dd><dl><dt><spanclass="section"><ahref="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><spanclass="section"><ahref="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><spanclass="section"><ahref="bugs.html">Bugs</a></span></dt><dd><dl><dt><spanclass="section"><ahref="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><spanclass="section"><ahref="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><spanclass="chapter"><ahref="setup.html">2. Setup</a></span></dt><dd><dl><dt><spanclass="section"><ahref="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><spanclass="section"><ahref="configure.html">Configure</a></span></dt><dt><spanclass="section"><ahref="make.html">Make</a></span></dt></dl></dd><dt><spanclass="chapter"><ahref="using.html">3. Using</a></span></dt><dd><dl><dt><spanclass="section"><ahref="using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><spanclass="section"><ahref="using_headers.html">Headers</a></span></dt><dd><dl><dt><spanclass="section"><ahref="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><spanclass="section"><ahref="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><spanclass="section"><ahref="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <codeclass="code">namespace std</code></a></span></dt><dt><spanclass="section"><ahref="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><spanclass="section"><ahref="using_macros.html">Macros</a></span></dt><dt><spanclass="section"><ahref="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><spanclass="section"><ahref="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><spanclass="section"><ahref="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><spanclass="section"><ahref="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><spanclass="section"><ahref="using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><spanclass="section"><ahref="using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><spanclass="section"><ahref="using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt></dl></dd><dt><spanclass="section"><ahref="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><spanclass="section"><ahref="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><spanclass="section"><ahref="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><spanclass="section"><ahref="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><spanclass="section"><ahref="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dd><dl><dt><spanclass="section"><ahref="using_concurrency.html#concurrency.io.structure">Structure</a></span></dt><dt><spanclass="section"><ahref="using_concurrency.html#concurrency.io.defaults">Defaults</a></span></dt><dt><spanclass="section"><ahref="using_concurrency.html#concurrency.io.future">Future</a></span></dt><dt><spanclass="section"><ahref="using_concurrency.html#concurrency.io.alt">Alternatives</a></span></dt></dl></dd><dt><spanclass="section"><ahref="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><spanclass="section"><ahref="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><spanclass="section"><ahref="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><spanclass="section"><ahref="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><spanclass="section"><ahref="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><spanclass="section"><ahref="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt><dd><dl><dt><spanclass="section"><ahref="using_exceptions.html#using.exception.compat.c">With <codeclass="literal">C</code></a></span></dt><dt><spanclass="section"><ahref="using_exceptions.html#using.exception.compat.posix">With <codeclass="literal">POSIX</code> thread cancellation</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="debug.html">Debugging Support</a></span></dt><dd><dl><dt><spanclass="section"><ahref="debug.html#debug.compiler">Using <spanclass="command"><strong>g++</strong></span></a></span></dt><dt><spanclass="section"><ahref="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><spanclass="section"><ahref="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><spanclass="section"><ahref="debug.html#debug.races">Data Race Hunting</a></span></dt><dt><spanclass="section"><ahref="debug.html#debug.gdb">Using <spanclass="command"><strong>gdb</strong></span></a></span></dt><dt><spanclass="section"><ahref="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><spanclass="section"><ahref="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><spanclass="section"><ahref="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><spanclass="section"><ahref="debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></div></div><divclass="navfooter"><hr/><tablewidth="100%"summary="Navigation footer"><tr><tdwidth="40%"align="left"><aaccesskey="p"href="index.html">Prev</a></td><tdwidth="20%"align="center"><aaccesskey="u"href="index.html">Up</a></td><tdwidth="40%"align="right"><aaccesskey="n"href="status.html">Next</a></td></tr><tr><tdwidth="40%"align="left"valign="top">The GNU C++ Library Manual </td><tdwidth="20%"align="center"><aaccesskey="h"href="../index.html">Home</a></td><tdwidth="40%"align="right"valign="top"> Chapter 1. Status</td></tr></table></div></body></html>
</h1></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="chapter"><ahref="status.html">1. Status</a></span></dt><dd><dl><dt><spanclass="section"><ahref="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><spanclass="section"><ahref="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><spanclass="section"><ahref="status.html#iso.1998.status">Implementation Status</a></span></dt><dt><spanclass="section"><ahref="status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><spanclass="section"><ahref="status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><spanclass="section"><ahref="status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><spanclass="section"><ahref="status.html#status.iso.2014">C++ 2014</a></span></dt><dt><spanclass="section"><ahref="status.html#status.iso.tr1">C++ TR1</a></span></dt><dd><dl><dt><spanclass="section"><ahref="status.html#iso.tr1.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><spanclass="section"><ahref="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt></dl></dd><dt><spanclass="section"><ahref="license.html">License</a></span></dt><dd><dl><dt><spanclass="section"><ahref="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><spanclass="section"><ahref="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><spanclass="section"><ahref="bugs.html">Bugs</a></span></dt><dd><dl><dt><spanclass="section"><ahref="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><spanclass="section"><ahref="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><spanclass="chapter"><ahref="setup.html">2. Setup</a></span></dt><dd><dl><dt><spanclass="section"><ahref="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><spanclass="section"><ahref="configure.html">Configure</a></span></dt><dt><spanclass="section"><ahref="make.html">Make</a></span></dt></dl></dd><dt><spanclass="chapter"><ahref="using.html">3. Using</a></span></dt><dd><dl><dt><spanclass="section"><ahref="using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><spanclass="section"><ahref="using_headers.html">Headers</a></span></dt><dd><dl><dt><spanclass="section"><ahref="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><spanclass="section"><ahref="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><spanclass="section"><ahref="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <codeclass="code">namespace std</code></a></span></dt><dt><spanclass="section"><ahref="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><spanclass="section"><ahref="using_macros.html">Macros</a></span></dt><dt><spanclass="section"><ahref="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><spanclass="section"><ahref="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><spanclass="section"><ahref="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><spanclass="section"><ahref="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><spanclass="section"><ahref="using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><spanclass="section"><ahref="using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><spanclass="section"><ahref="using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt></dl></dd><dt><spanclass="section"><ahref="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><spanclass="section"><ahref="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><spanclass="section"><ahref="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><spanclass="section"><ahref="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><spanclass="section"><ahref="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dd><dl><dt><spanclass="section"><ahref="using_concurrency.html#concurrency.io.structure">Structure</a></span></dt><dt><spanclass="section"><ahref="using_concurrency.html#concurrency.io.defaults">Defaults</a></span></dt><dt><spanclass="section"><ahref="using_concurrency.html#concurrency.io.future">Future</a></span></dt><dt><spanclass="section"><ahref="using_concurrency.html#concurrency.io.alt">Alternatives</a></span></dt></dl></dd><dt><spanclass="section"><ahref="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><spanclass="section"><ahref="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><spanclass="section"><ahref="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><spanclass="section"><ahref="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><spanclass="section"><ahref="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><spanclass="section"><ahref="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt><dd><dl><dt><spanclass="section"><ahref="using_exceptions.html#using.exception.compat.c">With <codeclass="literal">C</code></a></span></dt><dt><spanclass="section"><ahref="using_exceptions.html#using.exception.compat.posix">With <codeclass="literal">POSIX</code> thread cancellation</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="debug.html">Debugging Support</a></span></dt><dd><dl><dt><spanclass="section"><ahref="debug.html#debug.compiler">Using <spanclass="command"><strong>g++</strong></span></a></span></dt><dt><spanclass="section"><ahref="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><spanclass="section"><ahref="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><spanclass="section"><ahref="debug.html#debug.races">Data Race Hunting</a></span></dt><dt><spanclass="section"><ahref="debug.html#debug.gdb">Using <spanclass="command"><strong>gdb</strong></span></a></span></dt><dt><spanclass="section"><ahref="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><spanclass="section"><ahref="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><spanclass="section"><ahref="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><spanclass="section"><ahref="debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></div></div><divclass="navfooter"><hr/><tablewidth="100%"summary="Navigation footer"><tr><tdwidth="40%"align="left"><aaccesskey="p"href="index.html">Prev</a></td><tdwidth="20%"align="center"><aaccesskey="u"href="index.html">Up</a></td><tdwidth="40%"align="right"><aaccesskey="n"href="status.html">Next</a></td></tr><tr><tdwidth="40%"align="left"valign="top">The GNU C++ Library Manual </td><tdwidth="20%"align="center"><aaccesskey="h"href="../index.html">Home</a></td><tdwidth="40%"align="right"valign="top"> Chapter 1. Status</td></tr></table></div></body></html>
</h2></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="section"><ahref="io.html#std.io.objects">Iostream Objects</a></span></dt><dt><spanclass="section"><ahref="streambufs.html">Stream Buffers</a></span></dt><dd><dl><dt><spanclass="section"><ahref="streambufs.html#io.streambuf.derived">Derived streambuf Classes</a></span></dt><dt><spanclass="section"><ahref="streambufs.html#io.streambuf.buffering">Buffering</a></span></dt></dl></dd><dt><spanclass="section"><ahref="stringstreams.html">Memory Based Streams</a></span></dt><dd><dl><dt><spanclass="section"><ahref="stringstreams.html#std.io.memstreams.compat">Compatibility With strstream</a></span></dt></dl></dd><dt><spanclass="section"><ahref="fstreams.html">File Based Streams</a></span></dt><dd><dl><dt><spanclass="section"><ahref="fstreams.html#std.io.filestreams.copying_a_file">Copying a File</a></span></dt><dt><spanclass="section"><ahref="fstreams.html#std.io.filestreams.binary">Binary Input and Output</a></span></dt></dl></dd><dt><spanclass="section"><ahref="io_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><spanclass="section"><ahref="io_and_c.html#std.io.c.FILE">Using FILE* and file descriptors</a></span></dt><dt><spanclass="section"><ahref="io_and_c.html#std.io.c.sync">Performance</a></span></dt></dl></dd></dl></div><divclass="section"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aid="std.io.objects"></a>Iostream Objects</h2></div></div></div><p>To minimize the time you have to wait on the compiler, it's good to
</h2></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="section"><ahref="io.html#std.io.objects">Iostream Objects</a></span></dt><dt><spanclass="section"><ahref="streambufs.html">Stream Buffers</a></span></dt><dd><dl><dt><spanclass="section"><ahref="streambufs.html#io.streambuf.derived">Derived streambuf Classes</a></span></dt><dt><spanclass="section"><ahref="streambufs.html#io.streambuf.buffering">Buffering</a></span></dt></dl></dd><dt><spanclass="section"><ahref="stringstreams.html">Memory Based Streams</a></span></dt><dd><dl><dt><spanclass="section"><ahref="stringstreams.html#std.io.memstreams.compat">Compatibility With strstream</a></span></dt></dl></dd><dt><spanclass="section"><ahref="fstreams.html">File Based Streams</a></span></dt><dd><dl><dt><spanclass="section"><ahref="fstreams.html#std.io.filestreams.copying_a_file">Copying a File</a></span></dt><dt><spanclass="section"><ahref="fstreams.html#std.io.filestreams.binary">Binary Input and Output</a></span></dt></dl></dd><dt><spanclass="section"><ahref="io_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><spanclass="section"><ahref="io_and_c.html#std.io.c.FILE">Using FILE* and file descriptors</a></span></dt><dt><spanclass="section"><ahref="io_and_c.html#std.io.c.sync">Performance</a></span></dt></dl></dd></dl></div><divclass="section"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aid="std.io.objects"></a>Iostream Objects</h2></div></div></div><p>To minimize the time you have to wait on the compiler, it's good to
only include the headers you really need. Many people simply include
only include the headers you really need. Many people simply include
<iostream> when they don't need to -- and that can <spanclass="emphasis"><em>penalize
<codeclass="filename"><iostream></code> when they don't
your runtime as well.</em></span> Here are some tips on which header to use
need to -- and that can <spanclass="emphasis"><em>penalize your runtime as well.</em></span>
Here are some tips on which header to use
for which situations, starting with the simplest.
for which situations, starting with the simplest.
</p><p><spanclass="emphasis"><em><iosfwd></em></span> should be included whenever you simply
</h2></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="section"><ahref="iterators.html#std.iterators.predefined">Predefined</a></span></dt><dd><dl><dt><spanclass="section"><ahref="iterators.html#iterators.predefined.vs_pointers">Iterators vs. Pointers</a></span></dt><dt><spanclass="section"><ahref="iterators.html#iterators.predefined.end">One Past the End</a></span></dt></dl></dd></dl></div><divclass="section"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aid="std.iterators.predefined"></a>Predefined</h2></div></div></div><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="iterators.predefined.vs_pointers"></a>Iterators vs. Pointers</h3></div></div></div><p>
</h2></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="section"><ahref="iterators.html#std.iterators.predefined">Predefined</a></span></dt><dd><dl><dt><spanclass="section"><ahref="iterators.html#iterators.predefined.vs_pointers">Iterators vs. Pointers</a></span></dt><dt><spanclass="section"><ahref="iterators.html#iterators.predefined.end">One Past the End</a></span></dt></dl></dd></dl></div><divclass="section"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aid="std.iterators.predefined"></a>Predefined</h2></div></div></div><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="iterators.predefined.vs_pointers"></a>Iterators vs. Pointers</h3></div></div></div><p>
The following
The following
FAQ <aclass="link"href="../faq.html#faq.iterator_as_pod"title="7.1.">entry</a> points out that
FAQ <aclass="link"href="../faq.html#faq.iterator_as_pod"title="7.1.">entry</a> points out that
</h2></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="section"><ahref="localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><spanclass="section"><ahref="localization.html#std.localization.locales.locale">locale</a></span></dt><dd><dl><dt><spanclass="section"><ahref="localization.html#locales.locale.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="localization.html#locales.locale.design">Design</a></span></dt><dt><spanclass="section"><ahref="localization.html#locales.locale.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="localization.html#locale.impl.c">Interacting with "C" locales</a></span></dt></dl></dd><dt><spanclass="section"><ahref="localization.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="facets.html">Facets</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#std.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#facet.ctype.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#idm234603126096">Specializations</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#facet.codecvt.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.codecvt.design">Design</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#codecvt.design.wchar_t_size"><spanclass="type">wchar_t</span> Size</a></span></dt><dt><spanclass="section"><ahref="facets.html#codecvt.design.unicode">Support for Unicode</a></span></dt><dt><spanclass="section"><ahref="facets.html#codecvt.design.issues">Other Issues</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#facet.codecvt.impl">Implementation</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.codecvt.use">Use</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#manual.localization.facet.messages">messages</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#facet.messages.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.messages.design">Design</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.messages.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#messages.impl.models">Models</a></span></dt><dt><spanclass="section"><ahref="facets.html#messages.impl.gnu">The GNU Model</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#facet.messages.use">Use</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></div><divclass="section"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aid="std.localization.locales"></a>Locales</h2></div></div></div><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="std.localization.locales.locale"></a>locale</h3></div></div></div><p>
</h2></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="section"><ahref="localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><spanclass="section"><ahref="localization.html#std.localization.locales.locale">locale</a></span></dt><dd><dl><dt><spanclass="section"><ahref="localization.html#locales.locale.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="localization.html#locales.locale.design">Design</a></span></dt><dt><spanclass="section"><ahref="localization.html#locales.locale.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="localization.html#locale.impl.c">Interacting with "C" locales</a></span></dt></dl></dd><dt><spanclass="section"><ahref="localization.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="facets.html">Facets</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#std.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#facet.ctype.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#idm269891548288">Specializations</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#facet.codecvt.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.codecvt.design">Design</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#codecvt.design.wchar_t_size"><spanclass="type">wchar_t</span> Size</a></span></dt><dt><spanclass="section"><ahref="facets.html#codecvt.design.unicode">Support for Unicode</a></span></dt><dt><spanclass="section"><ahref="facets.html#codecvt.design.issues">Other Issues</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#facet.codecvt.impl">Implementation</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.codecvt.use">Use</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#manual.localization.facet.messages">messages</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#facet.messages.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.messages.design">Design</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.messages.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#messages.impl.models">Models</a></span></dt><dt><spanclass="section"><ahref="facets.html#messages.impl.gnu">The GNU Model</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#facet.messages.use">Use</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></div><divclass="section"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aid="std.localization.locales"></a>Locales</h2></div></div></div><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="std.localization.locales.locale"></a>locale</h3></div></div></div><p>
Describes the basic locale object, including nested
Describes the basic locale object, including nested
classes id, facet, and the reference-counted implementation object,
classes id, facet, and the reference-counted implementation object,
class _Impl.
class _Impl.
...
@@ -402,29 +402,29 @@ global locale" (emphasis Paolo), that is:
...
@@ -402,29 +402,29 @@ global locale" (emphasis Paolo), that is:
What should non-required facet instantiations do? If the
What should non-required facet instantiations do? If the
generic implementation is provided, then how to end-users
generic implementation is provided, then how to end-users
. </span></span></p></div><divclass="biblioentry"><aid="idm234603433712"></a><p><spanclass="citetitle"><emclass="citetitle">Yalloc: A Recycling C++ Allocator</em>. </span><spanclass="author"><spanclass="firstname">Felix</span><spanclass="surname">Yen</span>. </span></p></div></div></div><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="std.util.memory.auto_ptr"></a>auto_ptr</h3></div></div></div><divclass="section"><divclass="titlepage"><div><div><h4class="title"><aid="auto_ptr.limitations"></a>Limitations</h4></div></div></div><p>Explaining all of the fun and delicious things that can
. </span></span></p></div><divclass="biblioentry"><aid="idm269891855392"></a><p><spanclass="citetitle"><emclass="citetitle">Yalloc: A Recycling C++ Allocator</em>. </span><spanclass="author"><spanclass="firstname">Felix</span><spanclass="surname">Yen</span>. </span></p></div></div></div><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="std.util.memory.auto_ptr"></a>auto_ptr</h3></div></div></div><divclass="section"><divclass="titlepage"><div><div><h4class="title"><aid="auto_ptr.limitations"></a>Limitations</h4></div></div></div><p>Explaining all of the fun and delicious things that can
happen with misuse of the <codeclass="classname">auto_ptr</code> class
happen with misuse of the <codeclass="classname">auto_ptr</code> class
template (called <acronymclass="acronym">AP</acronym> here) would take some
template (called <acronymclass="acronym">AP</acronym> here) would take some
time. Suffice it to say that the use of <acronymclass="acronym">AP</acronym>
time. Suffice it to say that the use of <acronymclass="acronym">AP</acronym>
...
@@ -445,7 +445,7 @@ drops to zero.
...
@@ -445,7 +445,7 @@ drops to zero.
Derived classes override those functions to destroy resources in a context
Derived classes override those functions to destroy resources in a context
where the correct dynamic type is known. This is an application of the
where the correct dynamic type is known. This is an application of the
There is a single <codeclass="classname">_Sp_counted_base</code> class,
There is a single <codeclass="classname">_Sp_counted_base</code> class,
which is a template parameterized on the enum
which is a template parameterized on the enum
...
@@ -578,7 +578,7 @@ used when libstdc++ is built without <code class="literal">--enable-threads</cod
...
@@ -578,7 +578,7 @@ used when libstdc++ is built without <code class="literal">--enable-threads</cod
<codeclass="filename">ext/atomicity.h</code>, which detect if the program
<codeclass="filename">ext/atomicity.h</code>, which detect if the program
is multi-threaded. If only one thread of execution exists in
is multi-threaded. If only one thread of execution exists in
the program then less expensive non-atomic operations are used.
the program then less expensive non-atomic operations are used.
</p></div><divclass="section"><divclass="titlepage"><div><div><h5class="title"><aid="idm234603348176"></a>Related functions and classes</h5></div></div></div><divclass="variablelist"><dlclass="variablelist"><dt><spanclass="term"><codeclass="code">dynamic_pointer_cast</code>, <codeclass="code">static_pointer_cast</code>,
</p></div><divclass="section"><divclass="titlepage"><div><div><h5class="title"><aid="idm269891769792"></a>Related functions and classes</h5></div></div></div><divclass="variablelist"><dlclass="variablelist"><dt><spanclass="term"><codeclass="code">dynamic_pointer_cast</code>, <codeclass="code">static_pointer_cast</code>,
</h2></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="section"><ahref="numerics.html#std.numerics.complex">Complex</a></span></dt><dd><dl><dt><spanclass="section"><ahref="numerics.html#numerics.complex.processing">complex Processing</a></span></dt></dl></dd><dt><spanclass="section"><ahref="generalized_numeric_operations.html">Generalized Operations</a></span></dt><dt><spanclass="section"><ahref="numerics_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><spanclass="section"><ahref="numerics_and_c.html#numerics.c.array">Numerics vs. Arrays</a></span></dt><dt><spanclass="section"><ahref="numerics_and_c.html#numerics.c.c99">C99</a></span></dt></dl></dd></dl></div><divclass="section"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aid="std.numerics.complex"></a>Complex</h2></div></div></div><p>
</h2></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="section"><ahref="numerics.html#std.numerics.complex">Complex</a></span></dt><dd><dl><dt><spanclass="section"><ahref="numerics.html#numerics.complex.processing">complex Processing</a></span></dt></dl></dd><dt><spanclass="section"><ahref="generalized_numeric_operations.html">Generalized Operations</a></span></dt><dt><spanclass="section"><ahref="numerics_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><spanclass="section"><ahref="numerics_and_c.html#numerics.c.array">Numerics vs. Arrays</a></span></dt><dt><spanclass="section"><ahref="numerics_and_c.html#numerics.c.c99">C99</a></span></dt></dl></dd></dl></div><divclass="section"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aid="std.numerics.complex"></a>Complex</h2></div></div></div><p>
@@ -12,11 +12,11 @@ explicit source declaration or by compiling existing sources with a
...
@@ -12,11 +12,11 @@ explicit source declaration or by compiling existing sources with a
specific compiler flag.
specific compiler flag.
</p><divclass="section"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aid="manual.ext.parallel_mode.intro"></a>Intro</h2></div></div></div><p>The following library components in the include
</p><divclass="section"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aid="manual.ext.parallel_mode.intro"></a>Intro</h2></div></div></div><p>The following library components in the include
<codeclass="filename">numeric</code> are included in the parallel mode:</p><divclass="itemizedlist"><ulclass="itemizedlist"style="list-style-type: disc; "><liclass="listitem"><p><codeclass="function">std::accumulate</code></p></li><liclass="listitem"><p><codeclass="function">std::adjacent_difference</code></p></li><liclass="listitem"><p><codeclass="function">std::inner_product</code></p></li><liclass="listitem"><p><codeclass="function">std::partial_sum</code></p></li></ul></div><p>The following library components in the include
<codeclass="filename">numeric</code> are included in the parallel mode:</p><divclass="itemizedlist"><ulclass="itemizedlist"style="list-style-type: disc; "><liclass="listitem"><p><codeclass="function">std::accumulate</code></p></li><liclass="listitem"><p><codeclass="function">std::adjacent_difference</code></p></li><liclass="listitem"><p><codeclass="function">std::inner_product</code></p></li><liclass="listitem"><p><codeclass="function">std::partial_sum</code></p></li></ul></div><p>The following library components in the include
<codeclass="filename">algorithm</code> are included in the parallel mode:</p><divclass="itemizedlist"><ulclass="itemizedlist"style="list-style-type: disc; "><liclass="listitem"><p><codeclass="function">std::adjacent_find</code></p></li><liclass="listitem"><p><codeclass="function">std::count</code></p></li><liclass="listitem"><p><codeclass="function">std::count_if</code></p></li><liclass="listitem"><p><codeclass="function">std::equal</code></p></li><liclass="listitem"><p><codeclass="function">std::find</code></p></li><liclass="listitem"><p><codeclass="function">std::find_if</code></p></li><liclass="listitem"><p><codeclass="function">std::find_first_of</code></p></li><liclass="listitem"><p><codeclass="function">std::for_each</code></p></li><liclass="listitem"><p><codeclass="function">std::generate</code></p></li><liclass="listitem"><p><codeclass="function">std::generate_n</code></p></li><liclass="listitem"><p><codeclass="function">std::lexicographical_compare</code></p></li><liclass="listitem"><p><codeclass="function">std::mismatch</code></p></li><liclass="listitem"><p><codeclass="function">std::search</code></p></li><liclass="listitem"><p><codeclass="function">std::search_n</code></p></li><liclass="listitem"><p><codeclass="function">std::transform</code></p></li><liclass="listitem"><p><codeclass="function">std::replace</code></p></li><liclass="listitem"><p><codeclass="function">std::replace_if</code></p></li><liclass="listitem"><p><codeclass="function">std::max_element</code></p></li><liclass="listitem"><p><codeclass="function">std::merge</code></p></li><liclass="listitem"><p><codeclass="function">std::min_element</code></p></li><liclass="listitem"><p><codeclass="function">std::nth_element</code></p></li><liclass="listitem"><p><codeclass="function">std::partial_sort</code></p></li><liclass="listitem"><p><codeclass="function">std::partition</code></p></li><liclass="listitem"><p><codeclass="function">std::random_shuffle</code></p></li><liclass="listitem"><p><codeclass="function">std::set_union</code></p></li><liclass="listitem"><p><codeclass="function">std::set_intersection</code></p></li><liclass="listitem"><p><codeclass="function">std::set_symmetric_difference</code></p></li><liclass="listitem"><p><codeclass="function">std::set_difference</code></p></li><liclass="listitem"><p><codeclass="function">std::sort</code></p></li><liclass="listitem"><p><codeclass="function">std::stable_sort</code></p></li><liclass="listitem"><p><codeclass="function">std::unique_copy</code></p></li></ul></div></div><divclass="bibliography"><divclass="titlepage"><div><div><h2class="title"><aid="parallel_mode.biblio"></a>Bibliography</h2></div></div></div><divclass="biblioentry"><aid="idm234601941840"></a><p><spanclass="citetitle"><emclass="citetitle">
<codeclass="filename">algorithm</code> are included in the parallel mode:</p><divclass="itemizedlist"><ulclass="itemizedlist"style="list-style-type: disc; "><liclass="listitem"><p><codeclass="function">std::adjacent_find</code></p></li><liclass="listitem"><p><codeclass="function">std::count</code></p></li><liclass="listitem"><p><codeclass="function">std::count_if</code></p></li><liclass="listitem"><p><codeclass="function">std::equal</code></p></li><liclass="listitem"><p><codeclass="function">std::find</code></p></li><liclass="listitem"><p><codeclass="function">std::find_if</code></p></li><liclass="listitem"><p><codeclass="function">std::find_first_of</code></p></li><liclass="listitem"><p><codeclass="function">std::for_each</code></p></li><liclass="listitem"><p><codeclass="function">std::generate</code></p></li><liclass="listitem"><p><codeclass="function">std::generate_n</code></p></li><liclass="listitem"><p><codeclass="function">std::lexicographical_compare</code></p></li><liclass="listitem"><p><codeclass="function">std::mismatch</code></p></li><liclass="listitem"><p><codeclass="function">std::search</code></p></li><liclass="listitem"><p><codeclass="function">std::search_n</code></p></li><liclass="listitem"><p><codeclass="function">std::transform</code></p></li><liclass="listitem"><p><codeclass="function">std::replace</code></p></li><liclass="listitem"><p><codeclass="function">std::replace_if</code></p></li><liclass="listitem"><p><codeclass="function">std::max_element</code></p></li><liclass="listitem"><p><codeclass="function">std::merge</code></p></li><liclass="listitem"><p><codeclass="function">std::min_element</code></p></li><liclass="listitem"><p><codeclass="function">std::nth_element</code></p></li><liclass="listitem"><p><codeclass="function">std::partial_sort</code></p></li><liclass="listitem"><p><codeclass="function">std::partition</code></p></li><liclass="listitem"><p><codeclass="function">std::random_shuffle</code></p></li><liclass="listitem"><p><codeclass="function">std::set_union</code></p></li><liclass="listitem"><p><codeclass="function">std::set_intersection</code></p></li><liclass="listitem"><p><codeclass="function">std::set_symmetric_difference</code></p></li><liclass="listitem"><p><codeclass="function">std::set_difference</code></p></li><liclass="listitem"><p><codeclass="function">std::sort</code></p></li><liclass="listitem"><p><codeclass="function">std::stable_sort</code></p></li><liclass="listitem"><p><codeclass="function">std::unique_copy</code></p></li></ul></div></div><divclass="bibliography"><divclass="titlepage"><div><div><h2class="title"><aid="parallel_mode.biblio"></a>Bibliography</h2></div></div></div><divclass="biblioentry"><aid="idm269890341120"></a><p><spanclass="citetitle"><emclass="citetitle">
Parallelization of Bulk Operations for STL Dictionaries
Parallelization of Bulk Operations for STL Dictionaries
these invariants, one must supply some policy that is aware
these invariants, one must supply some policy that is aware
of these changes. Without this, it would be better to use a
of these changes. Without this, it would be better to use a
linked list (in itself very efficient for these purposes).
linked list (in itself very efficient for these purposes).
</p></li></ol></div><divclass="figure"><aid="idm234601255184"></a><pclass="title"><strong>Figure 22.1. Node Invariants</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_node_invariants.png"align="middle"alt="Node Invariants"/></div></div></div><brclass="figure-break"/></div><divclass="section"><divclass="titlepage"><div><div><h5class="title"><aid="motivation.associative.underlying"></a>Underlying Data Structures</h5></div></div></div><p>
</p></li></ol></div><divclass="figure"><aid="idm269889654480"></a><pclass="title"><strong>Figure 22.1. Node Invariants</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_node_invariants.png"align="middle"alt="Node Invariants"/></div></div></div><brclass="figure-break"/></div><divclass="section"><divclass="titlepage"><div><div><h5class="title"><aid="motivation.associative.underlying"></a>Underlying Data Structures</h5></div></div></div><p>
The standard C++ library contains associative containers based on
The standard C++ library contains associative containers based on
red-black trees and collision-chaining hash tables. These are
red-black trees and collision-chaining hash tables. These are
very useful, but they are not ideal for all types of
very useful, but they are not ideal for all types of
...
@@ -256,7 +256,7 @@
...
@@ -256,7 +256,7 @@
</p><p>
</p><p>
The figure below shows the different underlying data structures
The figure below shows the different underlying data structures
currently supported in this library.
currently supported in this library.
</p><divclass="figure"><aid="idm234601248528"></a><pclass="title"><strong>Figure 22.2. Underlying Associative Data Structures</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_different_underlying_dss_1.png"align="middle"alt="Underlying Associative Data Structures"/></div></div></div><brclass="figure-break"/><p>
</p><divclass="figure"><aid="idm269889647760"></a><pclass="title"><strong>Figure 22.2. Underlying Associative Data Structures</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_different_underlying_dss_1.png"align="middle"alt="Underlying Associative Data Structures"/></div></div></div><brclass="figure-break"/><p>
A shows a collision-chaining hash-table, B shows a probing
A shows a collision-chaining hash-table, B shows a probing
hash-table, C shows a red-black tree, D shows a splay tree, E shows
hash-table, C shows a red-black tree, D shows a splay tree, E shows
a tree based on an ordered vector(implicit in the order of the
a tree based on an ordered vector(implicit in the order of the
...
@@ -375,7 +375,7 @@
...
@@ -375,7 +375,7 @@
no guarantee that the elements traversed will coincide with the
no guarantee that the elements traversed will coincide with the
<spanclass="emphasis"><em>logical</em></span> elements between 1 and 5, as in
<spanclass="emphasis"><em>logical</em></span> elements between 1 and 5, as in
label B.
label B.
</p><divclass="figure"><aid="idm234601216896"></a><pclass="title"><strong>Figure 22.3. Range Iteration in Different Data Structures</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_point_iterators_range_ops_1.png"align="middle"alt="Node Invariants"/></div></div></div><brclass="figure-break"/><p>
</p><divclass="figure"><aid="idm269889616064"></a><pclass="title"><strong>Figure 22.3. Range Iteration in Different Data Structures</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_point_iterators_range_ops_1.png"align="middle"alt="Node Invariants"/></div></div></div><brclass="figure-break"/><p>
In our opinion, this problem is not caused just because
In our opinion, this problem is not caused just because
red-black trees are order preserving while
red-black trees are order preserving while
collision-chaining hash tables are (generally) not - it
collision-chaining hash tables are (generally) not - it
...
@@ -426,7 +426,7 @@
...
@@ -426,7 +426,7 @@
list, as in the graphic below, label B. Here the iterators are as
list, as in the graphic below, label B. Here the iterators are as
light as can be, but the hash-table's operations are more
light as can be, but the hash-table's operations are more
complicated.
complicated.
</p><divclass="figure"><aid="idm234601202048"></a><pclass="title"><strong>Figure 22.4. Point Iteration in Hash Data Structures</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_point_iterators_range_ops_2.png"align="middle"alt="Point Iteration in Hash Data Structures"/></div></div></div><brclass="figure-break"/><p>
</p><divclass="figure"><aid="idm269889601152"></a><pclass="title"><strong>Figure 22.4. Point Iteration in Hash Data Structures</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_point_iterators_range_ops_2.png"align="middle"alt="Point Iteration in Hash Data Structures"/></div></div></div><brclass="figure-break"/><p>
It should be noted that containers based on collision-chaining
It should be noted that containers based on collision-chaining
hash-tables are not the only ones with this type of behavior;
hash-tables are not the only ones with this type of behavior;
many other self-organizing data structures display it as well.
many other self-organizing data structures display it as well.
...
@@ -442,7 +442,7 @@
...
@@ -442,7 +442,7 @@
container. The graphic below shows three cases: A1 and A2 show
container. The graphic below shows three cases: A1 and A2 show
a red-black tree; B1 and B2 show a probing hash-table; C1 and C2
a red-black tree; B1 and B2 show a probing hash-table; C1 and C2
show a collision-chaining hash table.
show a collision-chaining hash table.
</p><divclass="figure"><aid="idm234601192784"></a><pclass="title"><strong>Figure 22.5. Effect of erase in different underlying data structures</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_invalidation_guarantee_erase.png"align="middle"alt="Effect of erase in different underlying data structures"/></div></div></div><brclass="figure-break"/><divclass="orderedlist"><olclass="orderedlist"type="1"><liclass="listitem"><p>
</p><divclass="figure"><aid="idm269889591888"></a><pclass="title"><strong>Figure 22.5. Effect of erase in different underlying data structures</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_invalidation_guarantee_erase.png"align="middle"alt="Effect of erase in different underlying data structures"/></div></div></div><brclass="figure-break"/><divclass="orderedlist"><olclass="orderedlist"type="1"><liclass="listitem"><p>
Erasing 5 from A1 yields A2. Clearly, an iterator to 3 can
Erasing 5 from A1 yields A2. Clearly, an iterator to 3 can
be de-referenced and incremented. The sequence of iterators
be de-referenced and incremented. The sequence of iterators
changed, but in a way that is well-defined by the interface.
changed, but in a way that is well-defined by the interface.
...
@@ -678,7 +678,7 @@
...
@@ -678,7 +678,7 @@
typically less structured than an associative container's tree;
typically less structured than an associative container's tree;
the third simply uses an associative container. These are
the third simply uses an associative container. These are
shown in the figure below with labels A1 and A2, B, and C.
shown in the figure below with labels A1 and A2, B, and C.
</p><divclass="figure"><aid="idm234601125200"></a><pclass="title"><strong>Figure 22.6. Underlying Priority Queue Data Structures</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_different_underlying_dss_2.png"align="middle"alt="Underlying Priority Queue Data Structures"/></div></div></div><brclass="figure-break"/><p>
</p><divclass="figure"><aid="idm269889524368"></a><pclass="title"><strong>Figure 22.6. Underlying Priority Queue Data Structures</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_different_underlying_dss_2.png"align="middle"alt="Underlying Priority Queue Data Structures"/></div></div></div><brclass="figure-break"/><p>
No single implementation can completely replace any of the
No single implementation can completely replace any of the
others. Some have better <codeclass="function">push</code>
others. Some have better <codeclass="function">push</code>
and <codeclass="function">pop</code> amortized performance, some have
and <codeclass="function">pop</code> amortized performance, some have
naturally; collision-chaining hash tables (label B) store
naturally; collision-chaining hash tables (label B) store
equivalent-key values in the same bucket, the bucket can be
equivalent-key values in the same bucket, the bucket can be
arranged so that equivalent-key values are consecutive.
arranged so that equivalent-key values are consecutive.
</p><divclass="figure"><aid="idm234600867728"></a><pclass="title"><strong>Figure 22.8. Non-unique Mapping Standard Containers</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_embedded_lists_1.png"align="middle"alt="Non-unique Mapping Standard Containers"/></div></div></div><brclass="figure-break"/><p>
</p><divclass="figure"><aid="idm269889267280"></a><pclass="title"><strong>Figure 22.8. Non-unique Mapping Standard Containers</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_embedded_lists_1.png"align="middle"alt="Non-unique Mapping Standard Containers"/></div></div></div><brclass="figure-break"/><p>
Put differently, the standards' non-unique mapping
Put differently, the standards' non-unique mapping
associative-containers are associative containers that map
associative-containers are associative containers that map
primary keys to linked lists that are embedded into the
primary keys to linked lists that are embedded into the
...
@@ -252,7 +252,7 @@
...
@@ -252,7 +252,7 @@
first graphic above. Labels A and B, respectively. Each shaded
first graphic above. Labels A and B, respectively. Each shaded
In the first example above, then, one would use an associative
In the first example above, then, one would use an associative
container mapping each user to an associative container which
container mapping each user to an associative container which
maps each application id to a start time (see
maps each application id to a start time (see
...
@@ -305,7 +305,7 @@
...
@@ -305,7 +305,7 @@
shows invariants for order-preserving containers: point-type
shows invariants for order-preserving containers: point-type
iterators are synonymous with range-type iterators.
iterators are synonymous with range-type iterators.
Orthogonally, <spanclass="emphasis"><em>C</em></span>shows invariants for "set"
Orthogonally, <spanclass="emphasis"><em>C</em></span>shows invariants for "set"
containers: iterators are synonymous with const iterators.</p><divclass="figure"><aid="idm234600824480"></a><pclass="title"><strong>Figure 22.11. Point Iterator Hierarchy</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_point_iterator_hierarchy.png"align="middle"alt="Point Iterator Hierarchy"/></div></div></div><brclass="figure-break"/><p>Note that point-type iterators in self-organizing containers
containers: iterators are synonymous with const iterators.</p><divclass="figure"><aid="idm269889223968"></a><pclass="title"><strong>Figure 22.11. Point Iterator Hierarchy</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_point_iterator_hierarchy.png"align="middle"alt="Point Iterator Hierarchy"/></div></div></div><brclass="figure-break"/><p>Note that point-type iterators in self-organizing containers
(hash-based associative containers) lack movement
(hash-based associative containers) lack movement
operators, such as <codeclass="literal">operator++</code> - in fact, this
operators, such as <codeclass="literal">operator++</code> - in fact, this
is the reason why this library differentiates from the standard C++ librarys
is the reason why this library differentiates from the standard C++ librarys
...
@@ -344,7 +344,7 @@
...
@@ -344,7 +344,7 @@
to the question of whether point-type iterators and range-type
to the question of whether point-type iterators and range-type
iterators are valid. The graphic below shows tags corresponding to
iterators are valid. The graphic below shows tags corresponding to
corresponds to a basic guarantee that a point-type iterator,
corresponds to a basic guarantee that a point-type iterator,
a found pointer, or a found reference, remains valid as long
a found pointer, or a found reference, remains valid as long
...
@@ -428,7 +428,7 @@
...
@@ -428,7 +428,7 @@
</p><p>
</p><p>
This library contains a container tag hierarchy corresponding to the
This library contains a container tag hierarchy corresponding to the
diagram below.
diagram below.
</p><divclass="figure"><aid="idm234600780976"></a><pclass="title"><strong>Figure 22.13. Container Tag Hierarchy</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_container_tag_hierarchy.png"align="middle"alt="Container Tag Hierarchy"/></div></div></div><brclass="figure-break"/><p>
</p><divclass="figure"><aid="idm269889180448"></a><pclass="title"><strong>Figure 22.13. Container Tag Hierarchy</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_container_tag_hierarchy.png"align="middle"alt="Container Tag Hierarchy"/></div></div></div><brclass="figure-break"/><p>
Given any container <spanclass="type">Cntnr</span>, the tag of
Given any container <spanclass="type">Cntnr</span>, the tag of
the underlying data structure can be found via <codeclass="literal">typename
the underlying data structure can be found via <codeclass="literal">typename
Cntnr::container_category</code>.
Cntnr::container_category</code>.
...
@@ -487,7 +487,7 @@
...
@@ -487,7 +487,7 @@
collision-chaining container, except for the following.</p><divclass="orderedlist"><olclass="orderedlist"type="1"><liclass="listitem"><p><codeclass="classname">Comb_Probe_Fn</code> describes how to transform a probe
collision-chaining container, except for the following.</p><divclass="orderedlist"><olclass="orderedlist"type="1"><liclass="listitem"><p><codeclass="classname">Comb_Probe_Fn</code> describes how to transform a probe
sequence into a sequence of positions within the table.</p></li><liclass="listitem"><p><codeclass="classname">Probe_Fn</code> describes a probe sequence policy.</p></li></ol></div><p>Some of the default template values depend on the values of
sequence into a sequence of positions within the table.</p></li><liclass="listitem"><p><codeclass="classname">Probe_Fn</code> describes a probe sequence policy.</p></li></ol></div><p>Some of the default template values depend on the values of
other parameters, and are explained below.</p></div><divclass="section"><divclass="titlepage"><div><div><h5class="title"><aid="container.hash.details"></a>Details</h5></div></div></div><divclass="section"><divclass="titlepage"><div><div><h6class="title"><aid="container.hash.details.hash_policies"></a>Hash Policies</h6></div></div></div><divclass="section"><divclass="titlepage"><div><div><h6class="title"><aid="details.hash_policies.general"></a>General</h6></div></div></div><p>Following is an explanation of some functions which hashing
other parameters, and are explained below.</p></div><divclass="section"><divclass="titlepage"><div><div><h5class="title"><aid="container.hash.details"></a>Details</h5></div></div></div><divclass="section"><divclass="titlepage"><div><div><h6class="title"><aid="container.hash.details.hash_policies"></a>Hash Policies</h6></div></div></div><divclass="section"><divclass="titlepage"><div><div><h6class="title"><aid="details.hash_policies.general"></a>General</h6></div></div></div><p>Following is an explanation of some functions which hashing
involves. The graphic below illustrates the discussion.</p><divclass="figure"><aid="idm234600740768"></a><pclass="title"><strong>Figure 22.14. Hash functions, ranged-hash functions, and
involves. The graphic below illustrates the discussion.</p><divclass="figure"><aid="idm269889140368"></a><pclass="title"><strong>Figure 22.14. Hash functions, ranged-hash functions, and
range-hashing functions</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_hash_ranged_hash_range_hashing_fns.png"align="middle"alt="Hash functions, ranged-hash functions, and range-hashing functions"/></div></div></div><brclass="figure-break"/><p>Let U be a domain (e.g., the integers, or the
range-hashing functions</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_hash_ranged_hash_range_hashing_fns.png"align="middle"alt="Hash functions, ranged-hash functions, and range-hashing functions"/></div></div></div><brclass="figure-break"/><p>Let U be a domain (e.g., the integers, or the
strings of 3 characters). A hash-table algorithm needs to map
strings of 3 characters). A hash-table algorithm needs to map
elements of U "uniformly" into the range [0,..., m -
elements of U "uniformly" into the range [0,..., m -
...
@@ -504,7 +504,7 @@
...
@@ -504,7 +504,7 @@
Z<sub>+</sub>,</p><p>which maps a non-negative hash value, and a non-negative
Z<sub>+</sub>,</p><p>which maps a non-negative hash value, and a non-negative
range upper-bound into a non-negative integral in the range
range upper-bound into a non-negative integral in the range
between 0 (inclusive) and the range upper bound (exclusive),
between 0 (inclusive) and the range upper bound (exclusive),
i.e., for any r in Z<sub>+</sub>,</p><p>0 ≤ g(r, m) ≤ m - 1</p><p>The resulting ranged-hash function, is</p><divclass="equation"><aid="idm234600726944"></a><pclass="title"><strong>Equation 22.1. Ranged Hash Function</strong></p><divclass="equation-contents"><spanclass="mathphrase">
i.e., for any r in Z<sub>+</sub>,</p><p>0 ≤ g(r, m) ≤ m - 1</p><p>The resulting ranged-hash function, is</p><divclass="equation"><aid="idm269889126560"></a><pclass="title"><strong>Equation 22.1. Ranged Hash Function</strong></p><divclass="equation-contents"><spanclass="mathphrase">
f(u , m) = g(h(u), m)
f(u , m) = g(h(u), m)
</span></div></div><brclass="equation-break"/><p>From the above, it is obvious that given g and
</span></div></div><brclass="equation-break"/><p>From the above, it is obvious that given g and
h, f can always be composed (however the converse
h, f can always be composed (however the converse
...
@@ -524,7 +524,7 @@
...
@@ -524,7 +524,7 @@
transforming the sequence of hash values into a sequence of
transforming the sequence of hash values into a sequence of
positions.</p></div><divclass="section"><divclass="titlepage"><div><div><h6class="title"><aid="details.hash_policies.range"></a>Range Hashing</h6></div></div></div><p>Some common choices for range-hashing functions are the
positions.</p></div><divclass="section"><divclass="titlepage"><div><div><h6class="title"><aid="details.hash_policies.range"></a>Range Hashing</h6></div></div></div><p>Some common choices for range-hashing functions are the
division, multiplication, and middle-square methods (<aclass="xref"href="policy_data_structures.html#biblio.knuth98sorting"title="The Art of Computer Programming - Sorting and Searching">[biblio.knuth98sorting]</a>), defined
division, multiplication, and middle-square methods (<aclass="xref"href="policy_data_structures.html#biblio.knuth98sorting"title="The Art of Computer Programming - Sorting and Searching">[biblio.knuth98sorting]</a>), defined
</span></div></div><brclass="equation-break"/><p>g(r, m) = ⌈ u/v ( a r mod v ) ⌉</p><p>and</p><p>g(r, m) = ⌈ u/v ( r<sup>2</sup> mod v ) ⌉</p><p>respectively, for some positive integrals u and
</span></div></div><brclass="equation-break"/><p>g(r, m) = ⌈ u/v ( a r mod v ) ⌉</p><p>and</p><p>g(r, m) = ⌈ u/v ( r<sup>2</sup> mod v ) ⌉</p><p>respectively, for some positive integrals u and
v (typically powers of 2), and some a. Each of
v (typically powers of 2), and some a. Each of
...
@@ -535,9 +535,9 @@
...
@@ -535,9 +535,9 @@
implement using the low
implement using the low
level % (modulo) operation (for any m), or the
level % (modulo) operation (for any m), or the
low level & (bit-mask) operation (for the case where
low level & (bit-mask) operation (for the case where
m is a power of 2), i.e.,</p><divclass="equation"><aid="idm234600716544"></a><pclass="title"><strong>Equation 22.3. Division via Prime Modulo</strong></p><divclass="equation-contents"><spanclass="mathphrase">
m is a power of 2), i.e.,</p><divclass="equation"><aid="idm269889116160"></a><pclass="title"><strong>Equation 22.3. Division via Prime Modulo</strong></p><divclass="equation-contents"><spanclass="mathphrase">
g(r, m) = r % m
g(r, m) = r % m
</span></div></div><brclass="equation-break"/><p>and</p><divclass="equation"><aid="idm234600714720"></a><pclass="title"><strong>Equation 22.4. Division via Bit Mask</strong></p><divclass="equation-contents"><spanclass="mathphrase">
</span></div></div><brclass="equation-break"/><p>and</p><divclass="equation"><aid="idm269889114336"></a><pclass="title"><strong>Equation 22.4. Division via Bit Mask</strong></p><divclass="equation-contents"><spanclass="mathphrase">
g(r, m) = r & m - 1, (with m =
g(r, m) = r & m - 1, (with m =
2<sup>k</sup> for some k)
2<sup>k</sup> for some k)
</span></div></div><brclass="equation-break"/><p>respectively.</p><p>The % (modulo) implementation has the advantage that for
</span></div></div><brclass="equation-break"/><p>respectively.</p><p>The % (modulo) implementation has the advantage that for
...
@@ -563,7 +563,7 @@
...
@@ -563,7 +563,7 @@
s = [ s<sub>0</sub>,..., s<sub>t - 1</sub>]
s = [ s<sub>0</sub>,..., s<sub>t - 1</sub>]
</p><p>be a string of t characters, each of which is from
</p><p>be a string of t characters, each of which is from
of a long DNA sequence (and so S = {'A', 'C', 'G',
of a long DNA sequence (and so S = {'A', 'C', 'G',
'T'}). In this case, scanning the entire string might be
'T'}). In this case, scanning the entire string might be
prohibitively expensive. A possible alternative might be to use
prohibitively expensive. A possible alternative might be to use
only the first k characters of the string, where</p><p>|S|<sup>k</sup> ≥ m ,</p><p>i.e., using the hash function</p><divclass="equation"><aid="idm234600698944"></a><pclass="title"><strong>Equation 22.6.
only the first k characters of the string, where</p><p>|S|<sup>k</sup> ≥ m ,</p><p>i.e., using the hash function</p><divclass="equation"><aid="idm269889098560"></a><pclass="title"><strong>Equation 22.6.
hash-functor, <codeclass="classname">Hash_Fn</code> is instantiated by <codeclass="classname">null_type</code> , then <codeclass="classname">Comb_Hash_Fn</code> is taken to be
hash-functor, <codeclass="classname">Hash_Fn</code> is instantiated by <codeclass="classname">null_type</code> , then <codeclass="classname">Comb_Hash_Fn</code> is taken to be
a ranged-hash function. The graphic below shows an <codeclass="function">insert</code> sequence
a ranged-hash function. The graphic below shows an <codeclass="function">insert</code> sequence
diagram. The user inserts an element (point A), the container
diagram. The user inserts an element (point A), the container
transforms the key into a position using the combining functor
transforms the key into a position using the combining functor
(points B and C).</p><divclass="figure"><aid="idm234600669328"></a><pclass="title"><strong>Figure 22.16. Insert hash sequence diagram with a null policy</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_hash_range_hashing_seq_diagram2.png"align="middle"alt="Insert hash sequence diagram with a null policy"/></div></div></div><brclass="figure-break"/></div><divclass="section"><divclass="titlepage"><div><div><h6class="title"><aid="hash_policies.implementation.probe"></a>
(points B and C).</p><divclass="figure"><aid="idm269889068880"></a><pclass="title"><strong>Figure 22.16. Insert hash sequence diagram with a null policy</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_hash_range_hashing_seq_diagram2.png"align="middle"alt="Insert hash sequence diagram with a null policy"/></div></div></div><brclass="figure-break"/></div><divclass="section"><divclass="titlepage"><div><div><h6class="title"><aid="hash_policies.implementation.probe"></a>
Probing tables
Probing tables
</h6></div></div></div><p><codeclass="classname">gp_hash_table</code> is parametrized by
</h6></div></div></div><p><codeclass="classname">gp_hash_table</code> is parametrized by
</p><divclass="figure"><aid="idm234600652512"></a><pclass="title"><strong>Figure 22.17. Hash policy class diagram</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_hash_policy_cd.png"align="middle"alt="Hash policy class diagram"/></div></div></div><brclass="figure-break"/></div></div></div><divclass="section"><divclass="titlepage"><div><div><h6class="title"><aid="container.hash.details.resize_policies"></a>Resize Policies</h6></div></div></div><divclass="section"><divclass="titlepage"><div><div><h6class="title"><aid="resize_policies.general"></a>General</h6></div></div></div><p>Hash-tables, as opposed to trees, do not naturally grow or
</p><divclass="figure"><aid="idm269889052112"></a><pclass="title"><strong>Figure 22.17. Hash policy class diagram</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_hash_policy_cd.png"align="middle"alt="Hash policy class diagram"/></div></div></div><brclass="figure-break"/></div></div></div><divclass="section"><divclass="titlepage"><div><div><h6class="title"><aid="container.hash.details.resize_policies"></a>Resize Policies</h6></div></div></div><divclass="section"><divclass="titlepage"><div><div><h6class="title"><aid="resize_policies.general"></a>General</h6></div></div></div><p>Hash-tables, as opposed to trees, do not naturally grow or
shrink. It is necessary to specify policies to determine how
shrink. It is necessary to specify policies to determine how
and when a hash table should change its size. Usually, resize
and when a hash table should change its size. Usually, resize
policies can be decomposed into orthogonal policies:</p><divclass="orderedlist"><olclass="orderedlist"type="1"><liclass="listitem"><p>A size policy indicating how a hash table
policies can be decomposed into orthogonal policies:</p><divclass="orderedlist"><olclass="orderedlist"type="1"><liclass="listitem"><p>A size policy indicating how a hash table
...
@@ -667,10 +667,10 @@
...
@@ -667,10 +667,10 @@
and some load factor be denoted by Α. We would like to
and some load factor be denoted by Α. We would like to
calculate the minimal length of k, such that if there were Α
calculate the minimal length of k, such that if there were Α
m elements in the hash table, a probe sequence of length k would
m elements in the hash table, a probe sequence of length k would
be found with probability at most 1/m.</p><divclass="figure"><aid="idm234600633472"></a><pclass="title"><strong>Figure 22.18. Balls and bins</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_balls_and_bins.png"align="middle"alt="Balls and bins"/></div></div></div><brclass="figure-break"/><p>Denote the probability that a probe sequence of length
be found with probability at most 1/m.</p><divclass="figure"><aid="idm269889033008"></a><pclass="title"><strong>Figure 22.18. Balls and bins</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_balls_and_bins.png"align="middle"alt="Balls and bins"/></div></div></div><brclass="figure-break"/><p>Denote the probability that a probe sequence of length
k appears in bin i by p<sub>i</sub>, the
k appears in bin i by p<sub>i</sub>, the
length of the probe sequence of bin i by
length of the probe sequence of bin i by
l<sub>i</sub>, and assume uniform distribution. Then</p><divclass="equation"><aid="idm234600627968"></a><pclass="title"><strong>Equation 22.7.
l<sub>i</sub>, and assume uniform distribution. Then</p><divclass="equation"><aid="idm269889027504"></a><pclass="title"><strong>Equation 22.7.
(<aclass="xref"href="policy_data_structures.html#biblio.dubhashi98neg"title="Balls and bins: A study in negative dependence">[biblio.dubhashi98neg]</a>)
(<aclass="xref"href="policy_data_structures.html#biblio.dubhashi98neg"title="Balls and bins: A study in negative dependence">[biblio.dubhashi98neg]</a>)
. Let
. Let
I(.) denote the indicator function. Then</p><divclass="equation"><aid="idm234600621200"></a><pclass="title"><strong>Equation 22.8.
I(.) denote the indicator function. Then</p><divclass="equation"><aid="idm269889020736"></a><pclass="title"><strong>Equation 22.8.
a resize is needed, and if so, what is the new size (points D
a resize is needed, and if so, what is the new size (points D
to G); following the resize, it notifies the policy that a
to G); following the resize, it notifies the policy that a
resize has completed (point H); finally, the element is
resize has completed (point H); finally, the element is
inserted, and the policy notified (point I).</p><divclass="figure"><aid="idm234600602752"></a><pclass="title"><strong>Figure 22.19. Insert resize sequence diagram</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_insert_resize_sequence_diagram1.png"align="middle"alt="Insert resize sequence diagram"/></div></div></div><brclass="figure-break"/><p>In practice, a resize policy can be usually orthogonally
inserted, and the policy notified (point I).</p><divclass="figure"><aid="idm269889002224"></a><pclass="title"><strong>Figure 22.19. Insert resize sequence diagram</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_insert_resize_sequence_diagram1.png"align="middle"alt="Insert resize sequence diagram"/></div></div></div><brclass="figure-break"/><p>In practice, a resize policy can be usually orthogonally
decomposed to a size policy and a trigger policy. Consequently,
decomposed to a size policy and a trigger policy. Consequently,
the library contains a single class for instantiating a resize
the library contains a single class for instantiating a resize
both, and acts as a standard delegate (<aclass="xref"href="policy_data_structures.html#biblio.gof"title="Design Patterns - Elements of Reusable Object-Oriented Software">[biblio.gof]</a>)
both, and acts as a standard delegate (<aclass="xref"href="policy_data_structures.html#biblio.gof"title="Design Patterns - Elements of Reusable Object-Oriented Software">[biblio.gof]</a>)
to these policies.</p><p>The two graphics immediately below show sequence diagrams
to these policies.</p><p>The two graphics immediately below show sequence diagrams
illustrating the interaction between the standard resize policy
illustrating the interaction between the standard resize policy
and its trigger and size policies, respectively.</p><divclass="figure"><aid="idm234600594976"></a><pclass="title"><strong>Figure 22.20. Standard resize policy trigger sequence
and its trigger and size policies, respectively.</p><divclass="figure"><aid="idm269888994448"></a><pclass="title"><strong>Figure 22.20. Standard resize policy trigger sequence
diagram</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_insert_resize_sequence_diagram3.png"align="middle"alt="Standard resize policy size sequence diagram"/></div></div></div><brclass="figure-break"/></div><divclass="section"><divclass="titlepage"><div><div><h6class="title"><aid="resize_policies.impl.predefined"></a>Predefined Policies</h6></div></div></div><p>The library includes the following
diagram</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_insert_resize_sequence_diagram3.png"align="middle"alt="Standard resize policy size sequence diagram"/></div></div></div><brclass="figure-break"/></div><divclass="section"><divclass="titlepage"><div><div><h6class="title"><aid="resize_policies.impl.predefined"></a>Predefined Policies</h6></div></div></div><p>The library includes the following
instantiations of size and trigger policies:</p><divclass="orderedlist"><olclass="orderedlist"type="1"><liclass="listitem"><p><codeclass="classname">hash_load_check_resize_trigger</code>
instantiations of size and trigger policies:</p><divclass="orderedlist"><olclass="orderedlist"type="1"><liclass="listitem"><p><codeclass="classname">hash_load_check_resize_trigger</code>
implements a load check trigger policy.</p></li><liclass="listitem"><p><codeclass="classname">cc_hash_max_collision_check_resize_trigger</code>
implements a load check trigger policy.</p></li><liclass="listitem"><p><codeclass="classname">cc_hash_max_collision_check_resize_trigger</code>
...
@@ -876,7 +876,7 @@
...
@@ -876,7 +876,7 @@
each node, and maintains node invariants (see <aclass="xref"href="policy_data_structures.html#biblio.clrs2001"title="Introduction to Algorithms, 2nd edition">[biblio.clrs2001]</a>.) The first stores in
each node, and maintains node invariants (see <aclass="xref"href="policy_data_structures.html#biblio.clrs2001"title="Introduction to Algorithms, 2nd edition">[biblio.clrs2001]</a>.) The first stores in
each node the size of the sub-tree rooted at the node; the
each node the size of the sub-tree rooted at the node; the
second stores at each node the maximal endpoint of the
second stores at each node the maximal endpoint of the
intervals at the sub-tree rooted at the node.</p><divclass="figure"><aid="idm234600512848"></a><pclass="title"><strong>Figure 22.22. Tree node invariants</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_tree_node_invariants.png"align="middle"alt="Tree node invariants"/></div></div></div><brclass="figure-break"/><p>Supporting such trees is difficult for a number of
intervals at the sub-tree rooted at the node.</p><divclass="figure"><aid="idm269888912192"></a><pclass="title"><strong>Figure 22.22. Tree node invariants</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_tree_node_invariants.png"align="middle"alt="Tree node invariants"/></div></div></div><brclass="figure-break"/><p>Supporting such trees is difficult for a number of
reasons:</p><divclass="orderedlist"><olclass="orderedlist"type="1"><liclass="listitem"><p>There must be a way to specify what a node's metadata
reasons:</p><divclass="orderedlist"><olclass="orderedlist"type="1"><liclass="listitem"><p>There must be a way to specify what a node's metadata
should be (if any).</p></li><liclass="listitem"><p>Various operations can invalidate node
should be (if any).</p></li><liclass="listitem"><p>Various operations can invalidate node
invariants. The graphic below shows how a right rotation,
invariants. The graphic below shows how a right rotation,
...
@@ -890,7 +890,7 @@
...
@@ -890,7 +890,7 @@
metadata.</p></li><liclass="listitem"><p>It is not feasible to know in advance which methods trees
metadata.</p></li><liclass="listitem"><p>It is not feasible to know in advance which methods trees
can support. Besides the usual <codeclass="classname">find</code> method, the
can support. Besides the usual <codeclass="classname">find</code> method, the
first tree can support a <codeclass="classname">find_by_order</code> method, while
first tree can support a <codeclass="classname">find_by_order</code> method, while
the second can support an <codeclass="classname">overlaps</code> method.</p></li></ol></div><divclass="figure"><aid="idm234600503408"></a><pclass="title"><strong>Figure 22.23. Tree node invalidation</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_tree_node_invalidations.png"align="middle"alt="Tree node invalidation"/></div></div></div><brclass="figure-break"/><p>These problems are solved by a combination of two means:
the second can support an <codeclass="classname">overlaps</code> method.</p></li></ol></div><divclass="figure"><aid="idm269888902752"></a><pclass="title"><strong>Figure 22.23. Tree node invalidation</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_tree_node_invalidations.png"align="middle"alt="Tree node invalidation"/></div></div></div><brclass="figure-break"/><p>These problems are solved by a combination of two means:
node iterators, and template-template node updater
node iterators, and template-template node updater
parameters.</p><divclass="section"><divclass="titlepage"><div><div><h6class="title"><aid="container.tree.node.iterators"></a>Node Iterators</h6></div></div></div><p>Each tree-based container defines two additional iterator
parameters.</p><divclass="section"><divclass="titlepage"><div><div><h6class="title"><aid="container.tree.node.iterators"></a>Node Iterators</h6></div></div></div><p>Each tree-based container defines two additional iterator
<codeclass="classname">node_update</code> class, and publicly subclasses
<codeclass="classname">node_update</code> class, and publicly subclasses
<codeclass="classname">node_update</code>. The graphic below shows this
<codeclass="classname">node_update</code>. The graphic below shows this
scheme, as well as some predefined policies (which are explained
scheme, as well as some predefined policies (which are explained
below).</p><divclass="figure"><aid="idm234600490240"></a><pclass="title"><strong>Figure 22.24. A tree and its update policy</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_tree_node_updator_policy_cd.png"align="middle"alt="A tree and its update policy"/></div></div></div><brclass="figure-break"/><p><codeclass="classname">node_update</code> (an instantiation of
below).</p><divclass="figure"><aid="idm269888889584"></a><pclass="title"><strong>Figure 22.24. A tree and its update policy</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_tree_node_updator_policy_cd.png"align="middle"alt="A tree and its update policy"/></div></div></div><brclass="figure-break"/><p><codeclass="classname">node_update</code> (an instantiation of
<codeclass="classname">Node_Update</code>) must define <codeclass="classname">metadata_type</code> as
<codeclass="classname">Node_Update</code>) must define <codeclass="classname">metadata_type</code> as
the type of metadata it requires. For order statistics,
the type of metadata it requires. For order statistics,
e.g., <codeclass="classname">metadata_type</code> might be <codeclass="classname">size_t</code>.
e.g., <codeclass="classname">metadata_type</code> might be <codeclass="classname">size_t</code>.
...
@@ -938,7 +938,7 @@
...
@@ -938,7 +938,7 @@
<codeclass="classname">nd_it</code>. For example, say node x in the
<codeclass="classname">nd_it</code>. For example, say node x in the
graphic below label A has an invalid invariant, but its' children,
graphic below label A has an invalid invariant, but its' children,
y and z have valid invariants. After the invocation, all three
y and z have valid invariants. After the invocation, all three
nodes should have valid invariants, as in label B.</p><divclass="figure"><aid="idm234600478576"></a><pclass="title"><strong>Figure 22.25. Restoring node invariants</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_restoring_node_invariants.png"align="middle"alt="Restoring node invariants"/></div></div></div><brclass="figure-break"/><p>When a tree operation might invalidate some node invariant,
nodes should have valid invariants, as in label B.</p><divclass="figure"><aid="idm269888877920"></a><pclass="title"><strong>Figure 22.25. Restoring node invariants</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_restoring_node_invariants.png"align="middle"alt="Restoring node invariants"/></div></div></div><brclass="figure-break"/><p>When a tree operation might invalidate some node invariant,
it invokes this method in its <codeclass="classname">node_update</code> base to
it invokes this method in its <codeclass="classname">node_update</code> base to
restore the invariant. For example, the graphic below shows
restore the invariant. For example, the graphic below shows
an <codeclass="function">insert</code> operation (point A); the tree performs some
an <codeclass="function">insert</code> operation (point A); the tree performs some
...
@@ -946,7 +946,7 @@
...
@@ -946,7 +946,7 @@
C, and D). (It is well known that any <codeclass="function">insert</code>,
C, and D). (It is well known that any <codeclass="function">insert</code>,
<codeclass="function">erase</code>, <codeclass="function">split</code> or <codeclass="function">join</code>, can restore
<codeclass="function">erase</code>, <codeclass="function">split</code> or <codeclass="function">join</code>, can restore
all node invariants by a small number of node invariant updates (<aclass="xref"href="policy_data_structures.html#biblio.clrs2001"title="Introduction to Algorithms, 2nd edition">[biblio.clrs2001]</a>)
all node invariants by a small number of node invariant updates (<aclass="xref"href="policy_data_structures.html#biblio.clrs2001"title="Introduction to Algorithms, 2nd edition">[biblio.clrs2001]</a>)
.</p><divclass="figure"><aid="idm234600470400"></a><pclass="title"><strong>Figure 22.26. Insert update sequence</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_update_seq_diagram.png"align="middle"alt="Insert update sequence"/></div></div></div><brclass="figure-break"/><p>To complete the description of the scheme, three questions
.</p><divclass="figure"><aid="idm269888869744"></a><pclass="title"><strong>Figure 22.26. Insert update sequence</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_update_seq_diagram.png"align="middle"alt="Insert update sequence"/></div></div></div><brclass="figure-break"/><p>To complete the description of the scheme, three questions
need to be answered:</p><divclass="orderedlist"><olclass="orderedlist"type="1"><liclass="listitem"><p>How can a tree which supports order statistics define a
need to be answered:</p><divclass="orderedlist"><olclass="orderedlist"type="1"><liclass="listitem"><p>How can a tree which supports order statistics define a
method such as <codeclass="classname">find_by_order</code>?</p></li><liclass="listitem"><p>How can the node updater base access methods of the
method such as <codeclass="classname">find_by_order</code>?</p></li><liclass="listitem"><p>How can the node updater base access methods of the
tree?</p></li><liclass="listitem"><p>How can the following cyclic dependency be resolved?
tree?</p></li><liclass="listitem"><p>How can the following cyclic dependency be resolved?
...
@@ -988,7 +988,7 @@
...
@@ -988,7 +988,7 @@
node's metadata (this is halting reducible). In the graphic
node's metadata (this is halting reducible). In the graphic
below, assume the shaded node is inserted. The tree would have
below, assume the shaded node is inserted. The tree would have
to traverse the useless path shown to the root, applying
to traverse the useless path shown to the root, applying
redundant updates all the way.</p></li></ol></div><divclass="figure"><aid="idm234600448144"></a><pclass="title"><strong>Figure 22.27. Useless update path</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_rationale_null_node_updator.png"align="middle"alt="Useless update path"/></div></div></div><brclass="figure-break"/><p>A null policy class, <codeclass="classname">null_node_update</code>
redundant updates all the way.</p></li></ol></div><divclass="figure"><aid="idm269888847488"></a><pclass="title"><strong>Figure 22.27. Useless update path</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_rationale_null_node_updator.png"align="middle"alt="Useless update path"/></div></div></div><brclass="figure-break"/><p>A null policy class, <codeclass="classname">null_node_update</code>
solves both these problems. The tree detects that node
solves both these problems. The tree detects that node
invariants are irrelevant, and defines all accordingly.</p></div></div><divclass="section"><divclass="titlepage"><div><div><h6class="title"><aid="container.tree.details.split"></a>Split and Join</h6></div></div></div><p>Tree-based containers support split and join methods.
invariants are irrelevant, and defines all accordingly.</p></div></div><divclass="section"><divclass="titlepage"><div><div><h6class="title"><aid="container.tree.details.split"></a>Split and Join</h6></div></div></div><p>Tree-based containers support split and join methods.
It is possible to split a tree so that it passes
It is possible to split a tree so that it passes
...
@@ -1071,7 +1071,7 @@
...
@@ -1071,7 +1071,7 @@
sub-tree with leafs "a" and "as". The maximal common prefix is
sub-tree with leafs "a" and "as". The maximal common prefix is
"a". The internal node contains, consequently, to const
"a". The internal node contains, consequently, to const
iterators, one pointing to <codeclass="varname">'a'</code>, and the other to
iterators, one pointing to <codeclass="varname">'a'</code>, and the other to
<codeclass="varname">'s'</code>.</p><divclass="figure"><aid="idm234600403456"></a><pclass="title"><strong>Figure 22.28. A PATRICIA trie</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_pat_trie.png"align="middle"alt="A PATRICIA trie"/></div></div></div><brclass="figure-break"/></div><divclass="section"><divclass="titlepage"><div><div><h6class="title"><aid="container.trie.details.node"></a>Node Invariants</h6></div></div></div><p>Trie-based containers support node invariants, as do
<codeclass="varname">'s'</code>.</p><divclass="figure"><aid="idm269888802800"></a><pclass="title"><strong>Figure 22.28. A PATRICIA trie</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_pat_trie.png"align="middle"alt="A PATRICIA trie"/></div></div></div><brclass="figure-break"/></div><divclass="section"><divclass="titlepage"><div><div><h6class="title"><aid="container.trie.details.node"></a>Node Invariants</h6></div></div></div><p>Trie-based containers support node invariants, as do
tree-based containers. There are two minor
tree-based containers. There are two minor
differences, though, which, unfortunately, thwart sharing them
differences, though, which, unfortunately, thwart sharing them
sharing the same node-updating policies:</p><divclass="orderedlist"><olclass="orderedlist"type="1"><liclass="listitem"><p>A trie's <codeclass="classname">Node_Update</code> template-template
sharing the same node-updating policies:</p><divclass="orderedlist"><olclass="orderedlist"type="1"><liclass="listitem"><p>A trie's <codeclass="classname">Node_Update</code> template-template
...
@@ -1080,7 +1080,7 @@
...
@@ -1080,7 +1080,7 @@
parametrized by <codeclass="classname">Cmp_Fn</code>.</p></li><liclass="listitem"><p>Tree-based containers store values in all nodes, while
parametrized by <codeclass="classname">Cmp_Fn</code>.</p></li><liclass="listitem"><p>Tree-based containers store values in all nodes, while
trie-based containers (at least in this implementation) store
trie-based containers (at least in this implementation) store
values in leafs.</p></li></ol></div><p>The graphic below shows the scheme, as well as some predefined
values in leafs.</p></li></ol></div><p>The graphic below shows the scheme, as well as some predefined
policies (which are explained below).</p><divclass="figure"><aid="idm234600392960"></a><pclass="title"><strong>Figure 22.29. A trie and its update policy</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_trie_node_updator_policy_cd.png"align="middle"alt="A trie and its update policy"/></div></div></div><brclass="figure-break"/><p>This library offers the following pre-defined trie node
policies (which are explained below).</p><divclass="figure"><aid="idm269888792304"></a><pclass="title"><strong>Figure 22.29. A trie and its update policy</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_trie_node_updator_policy_cd.png"align="middle"alt="A trie and its update policy"/></div></div></div><brclass="figure-break"/><p>This library offers the following pre-defined trie node
simple list of integer keys. If we search for the integer 6, we
simple list of integer keys. If we search for the integer 6, we
are paying an overhead: the link with key 6 is only the fifth
are paying an overhead: the link with key 6 is only the fifth
link; if it were the first link, it could be accessed
link; if it were the first link, it could be accessed
faster.</p><divclass="figure"><aid="idm234600362320"></a><pclass="title"><strong>Figure 22.30. A simple list</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_simple_list.png"align="middle"alt="A simple list"/></div></div></div><brclass="figure-break"/><p>List-update algorithms reorder lists as elements are
faster.</p><divclass="figure"><aid="idm269888761664"></a><pclass="title"><strong>Figure 22.30. A simple list</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_simple_list.png"align="middle"alt="A simple list"/></div></div></div><brclass="figure-break"/><p>List-update algorithms reorder lists as elements are
accessed. They try to determine, by the access history, which
accessed. They try to determine, by the access history, which
keys to move to the front of the list. Some of these algorithms
keys to move to the front of the list. Some of these algorithms
require adding some metadata alongside each entry.</p><p>For example, in the graphic below label A shows the counter
require adding some metadata alongside each entry.</p><p>For example, in the graphic below label A shows the counter
...
@@ -1138,7 +1138,7 @@
...
@@ -1138,7 +1138,7 @@
predetermined value, say 10, as shown in label C, the count is set
predetermined value, say 10, as shown in label C, the count is set
to 0 and the node is moved to the front of the list, as in label
to 0 and the node is moved to the front of the list, as in label
D.
D.
</p><divclass="figure"><aid="idm234600356736"></a><pclass="title"><strong>Figure 22.31. The counter algorithm</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_list_update.png"align="middle"alt="The counter algorithm"/></div></div></div><brclass="figure-break"/></div><divclass="section"><divclass="titlepage"><div><div><h6class="title"><aid="container.list.details.policies"></a>Policies</h6></div></div></div><p>this library allows instantiating lists with policies
</p><divclass="figure"><aid="idm269888756080"></a><pclass="title"><strong>Figure 22.31. The counter algorithm</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_list_update.png"align="middle"alt="The counter algorithm"/></div></div></div><brclass="figure-break"/></div><divclass="section"><divclass="titlepage"><div><div><h6class="title"><aid="container.list.details.policies"></a>Policies</h6></div></div></div><p>this library allows instantiating lists with policies
implementing any algorithm moving nodes to the front of the
implementing any algorithm moving nodes to the front of the
list (policies implementing algorithms interchanging nodes are
list (policies implementing algorithms interchanging nodes are
unsupported).</p><p>Associative containers based on lists are parametrized by a
unsupported).</p><p>Associative containers based on lists are parametrized by a
...
@@ -1310,7 +1310,7 @@
...
@@ -1310,7 +1310,7 @@
sequence; the second uses a tree (or forest of trees), which is
sequence; the second uses a tree (or forest of trees), which is
typically less structured than an associative container's tree;
typically less structured than an associative container's tree;
the third simply uses an associative container. These are
the third simply uses an associative container. These are
shown in the graphic below, in labels A1 and A2, label B, and label C.</p><divclass="figure"><aid="idm234600293024"></a><pclass="title"><strong>Figure 22.32. Underlying Priority-Queue Data-Structures.</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_priority_queue_different_underlying_dss.png"align="middle"alt="Underlying Priority-Queue Data-Structures."/></div></div></div><brclass="figure-break"/><p>Roughly speaking, any value that is both pushed and popped
shown in the graphic below, in labels A1 and A2, label B, and label C.</p><divclass="figure"><aid="idm269888692256"></a><pclass="title"><strong>Figure 22.32. Underlying Priority-Queue Data-Structures.</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_priority_queue_different_underlying_dss.png"align="middle"alt="Underlying Priority-Queue Data-Structures."/></div></div></div><brclass="figure-break"/><p>Roughly speaking, any value that is both pushed and popped
from a priority queue must incur a logarithmic expense (in the
from a priority queue must incur a logarithmic expense (in the
amortized sense). Any priority queue implementation that would
amortized sense). Any priority queue implementation that would
avoid this, would violate known bounds on comparison-based
avoid this, would violate known bounds on comparison-based
...
@@ -1390,7 +1390,7 @@
...
@@ -1390,7 +1390,7 @@
container <codeclass="classname">Cntnr</code>, the tag of the underlying
container <codeclass="classname">Cntnr</code>, the tag of the underlying
data structure can be found via <codeclass="classname">typename
data structure can be found via <codeclass="classname">typename
Cntnr::container_category</code>; this is one of the possible tags shown in the graphic below.
Cntnr::container_category</code>; this is one of the possible tags shown in the graphic below.
</p><divclass="figure"><aid="idm234600257984"></a><pclass="title"><strong>Figure 22.33. Priority-Queue Data-Structure Tags.</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_priority_queue_tag_hierarchy.png"align="middle"alt="Priority-Queue Data-Structure Tags."/></div></div></div><brclass="figure-break"/><p>Additionally, a traits mechanism can be used to query a
</p><divclass="figure"><aid="idm269888657216"></a><pclass="title"><strong>Figure 22.33. Priority-Queue Data-Structure Tags.</strong></p><divclass="figure-contents"><divclass="mediaobject"align="center"><imgsrc="../images/pbds_priority_queue_tag_hierarchy.png"align="middle"alt="Priority-Queue Data-Structure Tags."/></div></div></div><brclass="figure-break"/><p>Additionally, a traits mechanism can be used to query a
container type for its attributes. Given any container
container type for its attributes. Given any container
<codeclass="classname">Cntnr</code>, then </p><preclass="programlisting">__gnu_pbds::container_traits<Cntnr></pre><p>
<codeclass="classname">Cntnr</code>, then </p><preclass="programlisting">__gnu_pbds::container_traits<Cntnr></pre><p>
is a traits class identifying the properties of the
is a traits class identifying the properties of the
CONTAINERS</a></td><tdalign="left"><aclass="link"href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.hashtable_too_small"title="Hashtable Too Small">
CONTAINERS</a></td><tdalign="left"><aclass="link"href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.hashtable_too_small"title="Hashtable Too Small">
HASHTABLE_TOO_SMALL</a></td><tdalign="left">10</td><tdalign="left">1</td><tdalign="left"></td><tdalign="left">10</td><tdalign="left">yes</td></tr><tr><tdalign="left"></td><tdalign="left"><aclass="link"href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.hashtable_too_large"title="Hashtable Too Large">
HASHTABLE_TOO_SMALL</a></td><tdalign="left">10</td><tdalign="left">1</td><tdalign="left"></td><tdalign="left">10</td><tdalign="left">yes</td></tr><tr><tdalign="left"></td><tdalign="left"><aclass="link"href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.hashtable_too_large"title="Hashtable Too Large">
</td><tdalign="left">A proposal to add a utility class to represent optional objects</td><tdalign="left">Y</td><tdalign="left">Library Fundamentals TS</td></tr><tr><tdalign="left">
</td><tdalign="left">Network byte order conversion</td><tdalign="left">N</td><tdalign="left">Library Fundamentals TS</td></tr><tr><tdalign="left">
</td><tdalign="left"><codeclass="code">string_view</code>: a non-owning reference to a string</td><tdalign="left">Y</td><tdalign="left">Library Fundamentals TS</td></tr><trbgcolor="#C8C8B0"><tdalign="left">
</td><tdalign="left">A proposal to add a utility class to represent optional objects</td><tdalign="left">Y</td><tdalign="left">Library Fundamentals TS</td></tr><trbgcolor="#C8B0B0"><tdalign="left">
</td><tdalign="left">Invocation type traits, but dropping function_call_operator.</td><tdalign="left">N</td><tdalign="left">Library Fundamentals TS</td></tr><trbgcolor="#C8B0B0"><tdalign="left">
<aclass="link"href=""target="_top">
N3905
</a>
</td><tdalign="left">Faster string searching (Boyer-Moore et al.)</td><tdalign="left">N</td><tdalign="left">Library Fundamentals TS</td></tr><trbgcolor="#C8B0B0"><tdalign="left">
</td><tdalign="left">apply() call a function with arguments from a tuple</td><tdalign="left">N</td><tdalign="left">Library Fundamentals TS</td></tr><trbgcolor="#C8B0B0"><tdalign="left">
</td><tdalign="left">Extending shared_ptr to support arrays</td><tdalign="left">N</td><tdalign="left">Library Fundamentals TS</td></tr><tr><tdalign="left">
</td><tdalign="left"><codeclass="code">string_view</code>: a non-owning reference to a string</td><tdalign="left">Y</td><tdalign="left">Library Fundamentals TS</td></tr><trbgcolor="#C8B0B0"><tdalign="left">
</td><tdalign="left">Variable Templates For Type Traits</td><tdalign="left">N</td><tdalign="left">Library Fundamentals TS</td></tr><trbgcolor="#C8C8B0"><tdalign="left">
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="diagnostics.html#std.diagnostics.exceptions">Exceptions</a></span></dt><dd><dl><dt><spanclass="section"><ahref="diagnostics.html#std.diagnostics.exceptions.api">API Reference</a></span></dt><dt><spanclass="section"><ahref="diagnostics.html#std.diagnostics.exceptions.data">Adding Data to <codeclass="classname">exception</code></a></span></dt></dl></dd><dt><spanclass="section"><ahref="concept_checking.html">Concept Checking</a></span></dt></dl></dd><dt><spanclass="chapter"><ahref="utilities.html">6.
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="diagnostics.html#std.diagnostics.exceptions">Exceptions</a></span></dt><dd><dl><dt><spanclass="section"><ahref="diagnostics.html#std.diagnostics.exceptions.api">API Reference</a></span></dt><dt><spanclass="section"><ahref="diagnostics.html#std.diagnostics.exceptions.data">Adding Data to <codeclass="classname">exception</code></a></span></dt></dl></dd><dt><spanclass="section"><ahref="concept_checking.html">Concept Checking</a></span></dt></dl></dd><dt><spanclass="chapter"><ahref="utilities.html">6.
Utilities
Utilities
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="utilities.html#std.util.functors">Functors</a></span></dt><dt><spanclass="section"><ahref="pairs.html">Pairs</a></span></dt><dt><spanclass="section"><ahref="memory.html">Memory</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#std.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#allocator.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><spanclass="section"><ahref="memory.html#allocator.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#idm234604985488">Interface Design</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm234604981936">Selecting Default Allocation Policy</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm234604968640">Disabling Memory Caching</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><spanclass="section"><ahref="memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><spanclass="section"><ahref="memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#auto_ptr.limitations">Limitations</a></span></dt><dt><spanclass="section"><ahref="memory.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#shared_ptr.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="memory.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><spanclass="section"><ahref="memory.html#shared_ptr.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#idm234603392608">Class Hierarchy</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm234603370096">Thread Safety</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm234603362800">Selecting Lock Policy</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm234603348176">Related functions and classes</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#shared_ptr.using">Use</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#idm234603331760">Examples</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm234603328176">Unresolved Issues</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="traits.html">Traits</a></span></dt></dl></dd><dt><spanclass="chapter"><ahref="strings.html">7.
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="utilities.html#std.util.functors">Functors</a></span></dt><dt><spanclass="section"><ahref="pairs.html">Pairs</a></span></dt><dt><spanclass="section"><ahref="memory.html">Memory</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#std.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#allocator.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><spanclass="section"><ahref="memory.html#allocator.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#idm269891950848">Interface Design</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm269891947296">Selecting Default Allocation Policy</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm269891934000">Disabling Memory Caching</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><spanclass="section"><ahref="memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><spanclass="section"><ahref="memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#auto_ptr.limitations">Limitations</a></span></dt><dt><spanclass="section"><ahref="memory.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#shared_ptr.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="memory.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><spanclass="section"><ahref="memory.html#shared_ptr.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#idm269891814224">Class Hierarchy</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm269891791712">Thread Safety</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm269891784416">Selecting Lock Policy</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm269891769792">Related functions and classes</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#shared_ptr.using">Use</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#idm269891753440">Examples</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm269891749856">Unresolved Issues</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="traits.html">Traits</a></span></dt></dl></dd><dt><spanclass="chapter"><ahref="strings.html">7.
Strings
Strings
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="strings.html#std.strings.string">String Classes</a></span></dt><dd><dl><dt><spanclass="section"><ahref="strings.html#strings.string.simple">Simple Transformations</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.case">Case Sensitivity</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.character_types">Arbitrary Character Types</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.token">Tokenizing</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.shrink">Shrink to Fit</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.Cstring">CString (MFC)</a></span></dt></dl></dd></dl></dd><dt><spanclass="chapter"><ahref="localization.html">8.
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="strings.html#std.strings.string">String Classes</a></span></dt><dd><dl><dt><spanclass="section"><ahref="strings.html#strings.string.simple">Simple Transformations</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.case">Case Sensitivity</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.character_types">Arbitrary Character Types</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.token">Tokenizing</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.shrink">Shrink to Fit</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.Cstring">CString (MFC)</a></span></dt></dl></dd></dl></dd><dt><spanclass="chapter"><ahref="localization.html">8.
Localization
Localization
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><spanclass="section"><ahref="localization.html#std.localization.locales.locale">locale</a></span></dt><dd><dl><dt><spanclass="section"><ahref="localization.html#locales.locale.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="localization.html#locales.locale.design">Design</a></span></dt><dt><spanclass="section"><ahref="localization.html#locales.locale.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="localization.html#locale.impl.c">Interacting with "C" locales</a></span></dt></dl></dd><dt><spanclass="section"><ahref="localization.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="facets.html">Facets</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#std.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#facet.ctype.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#idm234603126096">Specializations</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#facet.codecvt.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.codecvt.design">Design</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#codecvt.design.wchar_t_size"><spanclass="type">wchar_t</span> Size</a></span></dt><dt><spanclass="section"><ahref="facets.html#codecvt.design.unicode">Support for Unicode</a></span></dt><dt><spanclass="section"><ahref="facets.html#codecvt.design.issues">Other Issues</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#facet.codecvt.impl">Implementation</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.codecvt.use">Use</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#manual.localization.facet.messages">messages</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#facet.messages.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.messages.design">Design</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.messages.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#messages.impl.models">Models</a></span></dt><dt><spanclass="section"><ahref="facets.html#messages.impl.gnu">The GNU Model</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#facet.messages.use">Use</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></dd><dt><spanclass="chapter"><ahref="containers.html">9.
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><spanclass="section"><ahref="localization.html#std.localization.locales.locale">locale</a></span></dt><dd><dl><dt><spanclass="section"><ahref="localization.html#locales.locale.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="localization.html#locales.locale.design">Design</a></span></dt><dt><spanclass="section"><ahref="localization.html#locales.locale.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="localization.html#locale.impl.c">Interacting with "C" locales</a></span></dt></dl></dd><dt><spanclass="section"><ahref="localization.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="facets.html">Facets</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#std.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#facet.ctype.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#idm269891548288">Specializations</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#facet.codecvt.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.codecvt.design">Design</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#codecvt.design.wchar_t_size"><spanclass="type">wchar_t</span> Size</a></span></dt><dt><spanclass="section"><ahref="facets.html#codecvt.design.unicode">Support for Unicode</a></span></dt><dt><spanclass="section"><ahref="facets.html#codecvt.design.issues">Other Issues</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#facet.codecvt.impl">Implementation</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.codecvt.use">Use</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#manual.localization.facet.messages">messages</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#facet.messages.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.messages.design">Design</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.messages.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="facets.html#messages.impl.models">Models</a></span></dt><dt><spanclass="section"><ahref="facets.html#messages.impl.gnu">The GNU Model</a></span></dt></dl></dd><dt><spanclass="section"><ahref="facets.html#facet.messages.use">Use</a></span></dt><dt><spanclass="section"><ahref="facets.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></dd><dt><spanclass="chapter"><ahref="containers.html">9.
Containers
Containers
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><spanclass="section"><ahref="containers.html#containers.sequences.vector">vector</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="associative.html">Associative</a></span></dt><dd><dl><dt><spanclass="section"><ahref="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><spanclass="section"><ahref="associative.html#containers.associative.bitset">bitset</a></span></dt><dd><dl><dt><spanclass="section"><ahref="associative.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><spanclass="section"><ahref="associative.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="unordered_associative.html">Unordered Associative</a></span></dt><dd><dl><dt><spanclass="section"><ahref="unordered_associative.html#containers.unordered.insert_hints">Insertion Hints</a></span></dt><dt><spanclass="section"><ahref="unordered_associative.html#containers.unordered.hash">Hash Code</a></span></dt><dd><dl><dt><spanclass="section"><ahref="unordered_associative.html#containers.unordered.cache">Hash Code Caching Policy</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></dd><dt><spanclass="chapter"><ahref="iterators.html">10.
</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><spanclass="section"><ahref="containers.html#containers.sequences.vector">vector</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="associative.html">Associative</a></span></dt><dd><dl><dt><spanclass="section"><ahref="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><spanclass="section"><ahref="associative.html#containers.associative.bitset">bitset</a></span></dt><dd><dl><dt><spanclass="section"><ahref="associative.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><spanclass="section"><ahref="associative.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="unordered_associative.html">Unordered Associative</a></span></dt><dd><dl><dt><spanclass="section"><ahref="unordered_associative.html#containers.unordered.insert_hints">Insertion Hints</a></span></dt><dt><spanclass="section"><ahref="unordered_associative.html#containers.unordered.hash">Hash Code</a></span></dt><dd><dl><dt><spanclass="section"><ahref="unordered_associative.html#containers.unordered.cache">Hash Code Caching Policy</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><spanclass="section"><ahref="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></dd><dt><spanclass="chapter"><ahref="iterators.html">10.
</p></div><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="io.streambuf.buffering"></a>Buffering</h3></div></div></div><p>First, are you sure that you understand buffering? Particularly
</p></div><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="io.streambuf.buffering"></a>Buffering</h3></div></div></div><p>First, are you sure that you understand buffering? Particularly
</h2></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="section"><ahref="strings.html#std.strings.string">String Classes</a></span></dt><dd><dl><dt><spanclass="section"><ahref="strings.html#strings.string.simple">Simple Transformations</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.case">Case Sensitivity</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.character_types">Arbitrary Character Types</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.token">Tokenizing</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.shrink">Shrink to Fit</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.Cstring">CString (MFC)</a></span></dt></dl></dd></dl></div><divclass="section"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aid="std.strings.string"></a>String Classes</h2></div></div></div><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="strings.string.simple"></a>Simple Transformations</h3></div></div></div><p>
</h2></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="section"><ahref="strings.html#std.strings.string">String Classes</a></span></dt><dd><dl><dt><spanclass="section"><ahref="strings.html#strings.string.simple">Simple Transformations</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.case">Case Sensitivity</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.character_types">Arbitrary Character Types</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.token">Tokenizing</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.shrink">Shrink to Fit</a></span></dt><dt><spanclass="section"><ahref="strings.html#strings.string.Cstring">CString (MFC)</a></span></dt></dl></dd></dl></div><divclass="section"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aid="std.strings.string"></a>String Classes</h2></div></div></div><divclass="section"><divclass="titlepage"><div><div><h3class="title"><aid="strings.string.simple"></a>Simple Transformations</h3></div></div></div><p>
Here are Standard, simple, and portable ways to perform common
Here are Standard, simple, and portable ways to perform common
transformations on a <codeclass="code">string</code> instance, such as
transformations on a <codeclass="code">string</code> instance, such as
By default, <spanclass="command"><strong>g++</strong></span> is equivalent to <spanclass="command"><strong>g++ -std=gnu++98</strong></span>. The standard library also defaults to this dialect.
By default, <spanclass="command"><strong>g++</strong></span> is equivalent to <spanclass="command"><strong>g++ -std=gnu++98</strong></span>. The standard library also defaults to this dialect.
</p><divclass="table"><aid="idm234605855552"></a><pclass="title"><strong>Table 3.1. C++ Command Options</strong></p><divclass="table-contents"><tablesummary="C++ Command Options"border="1"><colgroup><colalign="left"class="c1"/><colalign="left"class="c2"/></colgroup><thead><tr><thalign="left">Option Flags</th><thalign="left">Description</th></tr></thead><tbody><tr><tdalign="left"><codeclass="literal">-std=c++98</code></td><tdalign="left">Use the 1998 ISO C++ standard plus amendments.</td></tr><tr><tdalign="left"><codeclass="literal">-std=gnu++98</code></td><tdalign="left">As directly above, with GNU extensions.</td></tr><tr><tdalign="left"><codeclass="literal">-std=c++11</code></td><tdalign="left">Use the 2011 ISO C++ standard.</td></tr><tr><tdalign="left"><codeclass="literal">-std=gnu++11</code></td><tdalign="left">As directly above, with GNU extensions.</td></tr><tr><tdalign="left"><codeclass="literal">-fexceptions</code></td><tdalign="left">See <aclass="link"href="using_exceptions.html#intro.using.exception.no"title="Doing without">exception-free dialect</a></td></tr><tr><tdalign="left"><codeclass="literal">-frtti</code></td><tdalign="left">As above, but RTTI-free dialect.</td></tr><tr><tdalign="left"><codeclass="literal">-pthread</code> or <codeclass="literal">-pthreads</code></td><tdalign="left">For ISO C++11 <thread>, <future>,
</p><divclass="table"><aid="idm269894279056"></a><pclass="title"><strong>Table 3.1. C++ Command Options</strong></p><divclass="table-contents"><tablesummary="C++ Command Options"border="1"><colgroup><colalign="left"class="c1"/><colalign="left"class="c2"/></colgroup><thead><tr><thalign="left">Option Flags</th><thalign="left">Description</th></tr></thead><tbody><tr><tdalign="left"><codeclass="literal">-std=c++98</code></td><tdalign="left">Use the 1998 ISO C++ standard plus amendments.</td></tr><tr><tdalign="left"><codeclass="literal">-std=gnu++98</code></td><tdalign="left">As directly above, with GNU extensions.</td></tr><tr><tdalign="left"><codeclass="literal">-std=c++11</code></td><tdalign="left">Use the 2011 ISO C++ standard.</td></tr><tr><tdalign="left"><codeclass="literal">-std=gnu++11</code></td><tdalign="left">As directly above, with GNU extensions.</td></tr><tr><tdalign="left"><codeclass="literal">-fexceptions</code></td><tdalign="left">See <aclass="link"href="using_exceptions.html#intro.using.exception.no"title="Doing without">exception-free dialect</a></td></tr><tr><tdalign="left"><codeclass="literal">-frtti</code></td><tdalign="left">As above, but RTTI-free dialect.</td></tr><tr><tdalign="left"><codeclass="literal">-pthread</code> or <codeclass="literal">-pthreads</code></td><tdalign="left">For ISO C++11 <thread>, <future>,
the 1998 standard as updated for 2003, and the current 2011 standard.
the 1998 standard as updated for 2003, and the current 2011 standard.
</p><p>
</p><p>
C++98/03 include files. These are available in the default compilation mode, i.e. <codeclass="code">-std=c++98</code> or <codeclass="code">-std=gnu++98</code>.
C++98/03 include files. These are available in the default compilation mode, i.e. <codeclass="code">-std=c++98</code> or <codeclass="code">-std=gnu++98</code>.
</p><divclass="table"><aid="idm234605828128"></a><pclass="title"><strong>Table 3.2. C++ 1998 Library Headers</strong></p><divclass="table-contents"><tablesummary="C++ 1998 Library Headers"border="1"><colgroup><colalign="left"class="c1"/><colalign="left"class="c2"/><colalign="left"class="c3"/><colalign="left"class="c4"/><colalign="left"class="c5"/></colgroup><tbody><tr><tdalign="left"><codeclass="filename">algorithm</code></td><tdalign="left"><codeclass="filename">bitset</code></td><tdalign="left"><codeclass="filename">complex</code></td><tdalign="left"><codeclass="filename">deque</code></td><tdalign="left"><codeclass="filename">exception</code></td></tr><tr><tdalign="left"><codeclass="filename">fstream</code></td><tdalign="left"><codeclass="filename">functional</code></td><tdalign="left"><codeclass="filename">iomanip</code></td><tdalign="left"><codeclass="filename">ios</code></td><tdalign="left"><codeclass="filename">iosfwd</code></td></tr><tr><tdalign="left"><codeclass="filename">iostream</code></td><tdalign="left"><codeclass="filename">istream</code></td><tdalign="left"><codeclass="filename">iterator</code></td><tdalign="left"><codeclass="filename">limits</code></td><tdalign="left"><codeclass="filename">list</code></td></tr><tr><tdalign="left"><codeclass="filename">locale</code></td><tdalign="left"><codeclass="filename">map</code></td><tdalign="left"><codeclass="filename">memory</code></td><tdalign="left"><codeclass="filename">new</code></td><tdalign="left"><codeclass="filename">numeric</code></td></tr><tr><tdalign="left"><codeclass="filename">ostream</code></td><tdalign="left"><codeclass="filename">queue</code></td><tdalign="left"><codeclass="filename">set</code></td><tdalign="left"><codeclass="filename">sstream</code></td><tdalign="left"><codeclass="filename">stack</code></td></tr><tr><tdalign="left"><codeclass="filename">stdexcept</code></td><tdalign="left"><codeclass="filename">streambuf</code></td><tdalign="left"><codeclass="filename">string</code></td><tdalign="left"><codeclass="filename">utility</code></td><tdalign="left"><codeclass="filename">typeinfo</code></td></tr><tr><tdalign="left"><codeclass="filename">valarray</code></td><tdalign="left"><codeclass="filename">vector</code></td><tdclass="auto-generated"></td><tdclass="auto-generated"></td><tdclass="auto-generated"></td></tr></tbody></table></div></div><brclass="table-break"/><p></p><divclass="table"><aid="idm234605791648"></a><pclass="title"><strong>Table 3.3. C++ 1998 Library Headers for C Library Facilities</strong></p><divclass="table-contents"><tablesummary="C++ 1998 Library Headers for C Library Facilities"border="1"><colgroup><colalign="left"class="c1"/><colalign="left"class="c2"/><colalign="left"class="c3"/><colalign="left"class="c4"/><colalign="left"class="c5"/></colgroup><tbody><tr><tdalign="left"><codeclass="filename">cassert</code></td><tdalign="left"><codeclass="filename">cerrno</code></td><tdalign="left"><codeclass="filename">cctype</code></td><tdalign="left"><codeclass="filename">cfloat</code></td><tdalign="left"><codeclass="filename">ciso646</code></td></tr><tr><tdalign="left"><codeclass="filename">climits</code></td><tdalign="left"><codeclass="filename">clocale</code></td><tdalign="left"><codeclass="filename">cmath</code></td><tdalign="left"><codeclass="filename">csetjmp</code></td><tdalign="left"><codeclass="filename">csignal</code></td></tr><tr><tdalign="left"><codeclass="filename">cstdarg</code></td><tdalign="left"><codeclass="filename">cstddef</code></td><tdalign="left"><codeclass="filename">cstdio</code></td><tdalign="left"><codeclass="filename">cstdlib</code></td><tdalign="left"><codeclass="filename">cstring</code></td></tr><tr><tdalign="left"><codeclass="filename">ctime</code></td><tdalign="left"><codeclass="filename">cwchar</code></td><tdalign="left"><codeclass="filename">cwctype</code></td><tdclass="auto-generated"></td><tdclass="auto-generated"></td></tr></tbody></table></div></div><brclass="table-break"/><p>
</p><divclass="table"><aid="idm269894251568"></a><pclass="title"><strong>Table 3.2. C++ 1998 Library Headers</strong></p><divclass="table-contents"><tablesummary="C++ 1998 Library Headers"border="1"><colgroup><colalign="left"class="c1"/><colalign="left"class="c2"/><colalign="left"class="c3"/><colalign="left"class="c4"/><colalign="left"class="c5"/></colgroup><tbody><tr><tdalign="left"><codeclass="filename">algorithm</code></td><tdalign="left"><codeclass="filename">bitset</code></td><tdalign="left"><codeclass="filename">complex</code></td><tdalign="left"><codeclass="filename">deque</code></td><tdalign="left"><codeclass="filename">exception</code></td></tr><tr><tdalign="left"><codeclass="filename">fstream</code></td><tdalign="left"><codeclass="filename">functional</code></td><tdalign="left"><codeclass="filename">iomanip</code></td><tdalign="left"><codeclass="filename">ios</code></td><tdalign="left"><codeclass="filename">iosfwd</code></td></tr><tr><tdalign="left"><codeclass="filename">iostream</code></td><tdalign="left"><codeclass="filename">istream</code></td><tdalign="left"><codeclass="filename">iterator</code></td><tdalign="left"><codeclass="filename">limits</code></td><tdalign="left"><codeclass="filename">list</code></td></tr><tr><tdalign="left"><codeclass="filename">locale</code></td><tdalign="left"><codeclass="filename">map</code></td><tdalign="left"><codeclass="filename">memory</code></td><tdalign="left"><codeclass="filename">new</code></td><tdalign="left"><codeclass="filename">numeric</code></td></tr><tr><tdalign="left"><codeclass="filename">ostream</code></td><tdalign="left"><codeclass="filename">queue</code></td><tdalign="left"><codeclass="filename">set</code></td><tdalign="left"><codeclass="filename">sstream</code></td><tdalign="left"><codeclass="filename">stack</code></td></tr><tr><tdalign="left"><codeclass="filename">stdexcept</code></td><tdalign="left"><codeclass="filename">streambuf</code></td><tdalign="left"><codeclass="filename">string</code></td><tdalign="left"><codeclass="filename">utility</code></td><tdalign="left"><codeclass="filename">typeinfo</code></td></tr><tr><tdalign="left"><codeclass="filename">valarray</code></td><tdalign="left"><codeclass="filename">vector</code></td><tdclass="auto-generated"></td><tdclass="auto-generated"></td><tdclass="auto-generated"></td></tr></tbody></table></div></div><brclass="table-break"/><p></p><divclass="table"><aid="idm269894215088"></a><pclass="title"><strong>Table 3.3. C++ 1998 Library Headers for C Library Facilities</strong></p><divclass="table-contents"><tablesummary="C++ 1998 Library Headers for C Library Facilities"border="1"><colgroup><colalign="left"class="c1"/><colalign="left"class="c2"/><colalign="left"class="c3"/><colalign="left"class="c4"/><colalign="left"class="c5"/></colgroup><tbody><tr><tdalign="left"><codeclass="filename">cassert</code></td><tdalign="left"><codeclass="filename">cerrno</code></td><tdalign="left"><codeclass="filename">cctype</code></td><tdalign="left"><codeclass="filename">cfloat</code></td><tdalign="left"><codeclass="filename">ciso646</code></td></tr><tr><tdalign="left"><codeclass="filename">climits</code></td><tdalign="left"><codeclass="filename">clocale</code></td><tdalign="left"><codeclass="filename">cmath</code></td><tdalign="left"><codeclass="filename">csetjmp</code></td><tdalign="left"><codeclass="filename">csignal</code></td></tr><tr><tdalign="left"><codeclass="filename">cstdarg</code></td><tdalign="left"><codeclass="filename">cstddef</code></td><tdalign="left"><codeclass="filename">cstdio</code></td><tdalign="left"><codeclass="filename">cstdlib</code></td><tdalign="left"><codeclass="filename">cstring</code></td></tr><tr><tdalign="left"><codeclass="filename">ctime</code></td><tdalign="left"><codeclass="filename">cwchar</code></td><tdalign="left"><codeclass="filename">cwctype</code></td><tdclass="auto-generated"></td><tdclass="auto-generated"></td></tr></tbody></table></div></div><brclass="table-break"/><p>
C++11 include files. These are only available in C++11 compilation
C++11 include files. These are only available in C++11 compilation
mode, i.e. <codeclass="literal">-std=c++11</code> or <codeclass="literal">-std=gnu++11</code>.
mode, i.e. <codeclass="literal">-std=c++11</code> or <codeclass="literal">-std=gnu++11</code>.
</p><p></p><divclass="table"><aid="idm234605766912"></a><pclass="title"><strong>Table 3.4. C++ 2011 Library Headers</strong></p><divclass="table-contents"><tablesummary="C++ 2011 Library Headers"border="1"><colgroup><colalign="left"class="c1"/><colalign="left"class="c2"/><colalign="left"class="c3"/><colalign="left"class="c4"/><colalign="left"class="c5"/></colgroup><tbody><tr><tdalign="left"><codeclass="filename">algorithm</code></td><tdalign="left"><codeclass="filename">array</code></td><tdalign="left"><codeclass="filename">bitset</code></td><tdalign="left"><codeclass="filename">chrono</code></td><tdalign="left"><codeclass="filename">complex</code></td></tr><tr><tdalign="left"><codeclass="filename">condition_variable</code></td><tdalign="left"><codeclass="filename">deque</code></td><tdalign="left"><codeclass="filename">exception</code></td><tdalign="left"><codeclass="filename">forward_list</code></td><tdalign="left"><codeclass="filename">fstream</code></td></tr><tr><tdalign="left"><codeclass="filename">functional</code></td><tdalign="left"><codeclass="filename">future</code></td><tdalign="left"><codeclass="filename">initalizer_list</code></td><tdalign="left"><codeclass="filename">iomanip</code></td><tdalign="left"><codeclass="filename">ios</code></td></tr><tr><tdalign="left"><codeclass="filename">iosfwd</code></td><tdalign="left"><codeclass="filename">iostream</code></td><tdalign="left"><codeclass="filename">istream</code></td><tdalign="left"><codeclass="filename">iterator</code></td><tdalign="left"><codeclass="filename">limits</code></td></tr><tr><tdalign="left"><codeclass="filename">list</code></td><tdalign="left"><codeclass="filename">locale</code></td><tdalign="left"><codeclass="filename">map</code></td><tdalign="left"><codeclass="filename">memory</code></td><tdalign="left"><codeclass="filename">mutex</code></td></tr><tr><tdalign="left"><codeclass="filename">new</code></td><tdalign="left"><codeclass="filename">numeric</code></td><tdalign="left"><codeclass="filename">ostream</code></td><tdalign="left"><codeclass="filename">queue</code></td><tdalign="left"><codeclass="filename">random</code></td></tr><tr><tdalign="left"><codeclass="filename">ratio</code></td><tdalign="left"><codeclass="filename">regex</code></td><tdalign="left"><codeclass="filename">set</code></td><tdalign="left"><codeclass="filename">sstream</code></td><tdalign="left"><codeclass="filename">stack</code></td></tr><tr><tdalign="left"><codeclass="filename">stdexcept</code></td><tdalign="left"><codeclass="filename">streambuf</code></td><tdalign="left"><codeclass="filename">string</code></td><tdalign="left"><codeclass="filename">system_error</code></td><tdalign="left"><codeclass="filename">thread</code></td></tr><tr><tdalign="left"><codeclass="filename">tuple</code></td><tdalign="left"><codeclass="filename">type_traits</code></td><tdalign="left"><codeclass="filename">typeinfo</code></td><tdalign="left"><codeclass="filename">unordered_map</code></td><tdalign="left"><codeclass="filename">unordered_set</code></td></tr><tr><tdalign="left"><codeclass="filename">utility</code></td><tdalign="left"><codeclass="filename">valarray</code></td><tdalign="left"><codeclass="filename">vector</code></td><tdclass="auto-generated"></td><tdclass="auto-generated"></td></tr></tbody></table></div></div><brclass="table-break"/><p></p><divclass="table"><aid="idm234605715472"></a><pclass="title"><strong>Table 3.5. C++ 2011 Library Headers for C Library Facilities</strong></p><divclass="table-contents"><tablesummary="C++ 2011 Library Headers for C Library Facilities"border="1"><colgroup><colalign="left"class="c1"/><colalign="left"class="c2"/><colalign="left"class="c3"/><colalign="left"class="c4"/><colalign="left"class="c5"/></colgroup><tbody><tr><tdalign="left"><codeclass="filename">cassert</code></td><tdalign="left"><codeclass="filename">ccomplex</code></td><tdalign="left"><codeclass="filename">cctype</code></td><tdalign="left"><codeclass="filename">cerrno</code></td><tdalign="left"><codeclass="filename">cfenv</code></td></tr><tr><tdalign="left"><codeclass="filename">cfloat</code></td><tdalign="left"><codeclass="filename">cinttypes</code></td><tdalign="left"><codeclass="filename">ciso646</code></td><tdalign="left"><codeclass="filename">climits</code></td><tdalign="left"><codeclass="filename">clocale</code></td></tr><tr><tdalign="left"><codeclass="filename">cmath</code></td><tdalign="left"><codeclass="filename">csetjmp</code></td><tdalign="left"><codeclass="filename">csignal</code></td><tdalign="left"><codeclass="filename">cstdarg</code></td><tdalign="left"><codeclass="filename">cstdbool</code></td></tr><tr><tdalign="left"><codeclass="filename">cstddef</code></td><tdalign="left"><codeclass="filename">cstdint</code></td><tdalign="left"><codeclass="filename">cstdlib</code></td><tdalign="left"><codeclass="filename">cstdio</code></td><tdalign="left"><codeclass="filename">cstring</code></td></tr><tr><tdalign="left"><codeclass="filename">ctgmath</code></td><tdalign="left"><codeclass="filename">ctime</code></td><tdalign="left"><codeclass="filename">cuchar</code></td><tdalign="left"><codeclass="filename">cwchar</code></td><tdalign="left"><codeclass="filename">cwctype</code></td></tr></tbody></table></div></div><brclass="table-break"/><p>
</p><p></p><divclass="table"><aid="idm269894190352"></a><pclass="title"><strong>Table 3.4. C++ 2011 Library Headers</strong></p><divclass="table-contents"><tablesummary="C++ 2011 Library Headers"border="1"><colgroup><colalign="left"class="c1"/><colalign="left"class="c2"/><colalign="left"class="c3"/><colalign="left"class="c4"/><colalign="left"class="c5"/></colgroup><tbody><tr><tdalign="left"><codeclass="filename">algorithm</code></td><tdalign="left"><codeclass="filename">array</code></td><tdalign="left"><codeclass="filename">bitset</code></td><tdalign="left"><codeclass="filename">chrono</code></td><tdalign="left"><codeclass="filename">complex</code></td></tr><tr><tdalign="left"><codeclass="filename">condition_variable</code></td><tdalign="left"><codeclass="filename">deque</code></td><tdalign="left"><codeclass="filename">exception</code></td><tdalign="left"><codeclass="filename">forward_list</code></td><tdalign="left"><codeclass="filename">fstream</code></td></tr><tr><tdalign="left"><codeclass="filename">functional</code></td><tdalign="left"><codeclass="filename">future</code></td><tdalign="left"><codeclass="filename">initalizer_list</code></td><tdalign="left"><codeclass="filename">iomanip</code></td><tdalign="left"><codeclass="filename">ios</code></td></tr><tr><tdalign="left"><codeclass="filename">iosfwd</code></td><tdalign="left"><codeclass="filename">iostream</code></td><tdalign="left"><codeclass="filename">istream</code></td><tdalign="left"><codeclass="filename">iterator</code></td><tdalign="left"><codeclass="filename">limits</code></td></tr><tr><tdalign="left"><codeclass="filename">list</code></td><tdalign="left"><codeclass="filename">locale</code></td><tdalign="left"><codeclass="filename">map</code></td><tdalign="left"><codeclass="filename">memory</code></td><tdalign="left"><codeclass="filename">mutex</code></td></tr><tr><tdalign="left"><codeclass="filename">new</code></td><tdalign="left"><codeclass="filename">numeric</code></td><tdalign="left"><codeclass="filename">ostream</code></td><tdalign="left"><codeclass="filename">queue</code></td><tdalign="left"><codeclass="filename">random</code></td></tr><tr><tdalign="left"><codeclass="filename">ratio</code></td><tdalign="left"><codeclass="filename">regex</code></td><tdalign="left"><codeclass="filename">set</code></td><tdalign="left"><codeclass="filename">sstream</code></td><tdalign="left"><codeclass="filename">stack</code></td></tr><tr><tdalign="left"><codeclass="filename">stdexcept</code></td><tdalign="left"><codeclass="filename">streambuf</code></td><tdalign="left"><codeclass="filename">string</code></td><tdalign="left"><codeclass="filename">system_error</code></td><tdalign="left"><codeclass="filename">thread</code></td></tr><tr><tdalign="left"><codeclass="filename">tuple</code></td><tdalign="left"><codeclass="filename">type_traits</code></td><tdalign="left"><codeclass="filename">typeinfo</code></td><tdalign="left"><codeclass="filename">unordered_map</code></td><tdalign="left"><codeclass="filename">unordered_set</code></td></tr><tr><tdalign="left"><codeclass="filename">utility</code></td><tdalign="left"><codeclass="filename">valarray</code></td><tdalign="left"><codeclass="filename">vector</code></td><tdclass="auto-generated"></td><tdclass="auto-generated"></td></tr></tbody></table></div></div><brclass="table-break"/><p></p><divclass="table"><aid="idm269894138912"></a><pclass="title"><strong>Table 3.5. C++ 2011 Library Headers for C Library Facilities</strong></p><divclass="table-contents"><tablesummary="C++ 2011 Library Headers for C Library Facilities"border="1"><colgroup><colalign="left"class="c1"/><colalign="left"class="c2"/><colalign="left"class="c3"/><colalign="left"class="c4"/><colalign="left"class="c5"/></colgroup><tbody><tr><tdalign="left"><codeclass="filename">cassert</code></td><tdalign="left"><codeclass="filename">ccomplex</code></td><tdalign="left"><codeclass="filename">cctype</code></td><tdalign="left"><codeclass="filename">cerrno</code></td><tdalign="left"><codeclass="filename">cfenv</code></td></tr><tr><tdalign="left"><codeclass="filename">cfloat</code></td><tdalign="left"><codeclass="filename">cinttypes</code></td><tdalign="left"><codeclass="filename">ciso646</code></td><tdalign="left"><codeclass="filename">climits</code></td><tdalign="left"><codeclass="filename">clocale</code></td></tr><tr><tdalign="left"><codeclass="filename">cmath</code></td><tdalign="left"><codeclass="filename">csetjmp</code></td><tdalign="left"><codeclass="filename">csignal</code></td><tdalign="left"><codeclass="filename">cstdarg</code></td><tdalign="left"><codeclass="filename">cstdbool</code></td></tr><tr><tdalign="left"><codeclass="filename">cstddef</code></td><tdalign="left"><codeclass="filename">cstdint</code></td><tdalign="left"><codeclass="filename">cstdlib</code></td><tdalign="left"><codeclass="filename">cstdio</code></td><tdalign="left"><codeclass="filename">cstring</code></td></tr><tr><tdalign="left"><codeclass="filename">ctgmath</code></td><tdalign="left"><codeclass="filename">ctime</code></td><tdalign="left"><codeclass="filename">cuchar</code></td><tdalign="left"><codeclass="filename">cwchar</code></td><tdalign="left"><codeclass="filename">cwctype</code></td></tr></tbody></table></div></div><brclass="table-break"/><p>
In addition, TR1 includes as:
In addition, TR1 includes as:
</p><divclass="table"><aid="idm234605685584"></a><pclass="title"><strong>Table 3.6. C++ TR 1 Library Headers</strong></p><divclass="table-contents"><tablesummary="C++ TR 1 Library Headers"border="1"><colgroup><colalign="left"class="c1"/><colalign="left"class="c2"/><colalign="left"class="c3"/><colalign="left"class="c4"/><colalign="left"class="c5"/></colgroup><tbody><tr><tdalign="left"><codeclass="filename">tr1/array</code></td><tdalign="left"><codeclass="filename">tr1/complex</code></td><tdalign="left"><codeclass="filename">tr1/memory</code></td><tdalign="left"><codeclass="filename">tr1/functional</code></td><tdalign="left"><codeclass="filename">tr1/random</code></td></tr><tr><tdalign="left"><codeclass="filename">tr1/regex</code></td><tdalign="left"><codeclass="filename">tr1/tuple</code></td><tdalign="left"><codeclass="filename">tr1/type_traits</code></td><tdalign="left"><codeclass="filename">tr1/unordered_map</code></td><tdalign="left"><codeclass="filename">tr1/unordered_set</code></td></tr><tr><tdalign="left"><codeclass="filename">tr1/utility</code></td><tdclass="auto-generated"></td><tdclass="auto-generated"></td><tdclass="auto-generated"></td><tdclass="auto-generated"></td></tr></tbody></table></div></div><brclass="table-break"/><p></p><divclass="table"><aid="idm234605668656"></a><pclass="title"><strong>Table 3.7. C++ TR 1 Library Headers for C Library Facilities</strong></p><divclass="table-contents"><tablesummary="C++ TR 1 Library Headers for C Library Facilities"border="1"><colgroup><colalign="left"class="c1"/><colalign="left"class="c2"/><colalign="left"class="c3"/><colalign="left"class="c4"/><colalign="left"class="c5"/></colgroup><tbody><tr><tdalign="left"><codeclass="filename">tr1/ccomplex</code></td><tdalign="left"><codeclass="filename">tr1/cfenv</code></td><tdalign="left"><codeclass="filename">tr1/cfloat</code></td><tdalign="left"><codeclass="filename">tr1/cmath</code></td><tdalign="left"><codeclass="filename">tr1/cinttypes</code></td></tr><tr><tdalign="left"><codeclass="filename">tr1/climits</code></td><tdalign="left"><codeclass="filename">tr1/cstdarg</code></td><tdalign="left"><codeclass="filename">tr1/cstdbool</code></td><tdalign="left"><codeclass="filename">tr1/cstdint</code></td><tdalign="left"><codeclass="filename">tr1/cstdio</code></td></tr><tr><tdalign="left"><codeclass="filename">tr1/cstdlib</code></td><tdalign="left"><codeclass="filename">tr1/ctgmath</code></td><tdalign="left"><codeclass="filename">tr1/ctime</code></td><tdalign="left"><codeclass="filename">tr1/cwchar</code></td><tdalign="left"><codeclass="filename">tr1/cwctype</code></td></tr></tbody></table></div></div><brclass="table-break"/><p>Decimal floating-point arithmetic is available if the C++
</p><divclass="table"><aid="idm269894109024"></a><pclass="title"><strong>Table 3.6. C++ TR 1 Library Headers</strong></p><divclass="table-contents"><tablesummary="C++ TR 1 Library Headers"border="1"><colgroup><colalign="left"class="c1"/><colalign="left"class="c2"/><colalign="left"class="c3"/><colalign="left"class="c4"/><colalign="left"class="c5"/></colgroup><tbody><tr><tdalign="left"><codeclass="filename">tr1/array</code></td><tdalign="left"><codeclass="filename">tr1/complex</code></td><tdalign="left"><codeclass="filename">tr1/memory</code></td><tdalign="left"><codeclass="filename">tr1/functional</code></td><tdalign="left"><codeclass="filename">tr1/random</code></td></tr><tr><tdalign="left"><codeclass="filename">tr1/regex</code></td><tdalign="left"><codeclass="filename">tr1/tuple</code></td><tdalign="left"><codeclass="filename">tr1/type_traits</code></td><tdalign="left"><codeclass="filename">tr1/unordered_map</code></td><tdalign="left"><codeclass="filename">tr1/unordered_set</code></td></tr><tr><tdalign="left"><codeclass="filename">tr1/utility</code></td><tdclass="auto-generated"></td><tdclass="auto-generated"></td><tdclass="auto-generated"></td><tdclass="auto-generated"></td></tr></tbody></table></div></div><brclass="table-break"/><p></p><divclass="table"><aid="idm269894092096"></a><pclass="title"><strong>Table 3.7. C++ TR 1 Library Headers for C Library Facilities</strong></p><divclass="table-contents"><tablesummary="C++ TR 1 Library Headers for C Library Facilities"border="1"><colgroup><colalign="left"class="c1"/><colalign="left"class="c2"/><colalign="left"class="c3"/><colalign="left"class="c4"/><colalign="left"class="c5"/></colgroup><tbody><tr><tdalign="left"><codeclass="filename">tr1/ccomplex</code></td><tdalign="left"><codeclass="filename">tr1/cfenv</code></td><tdalign="left"><codeclass="filename">tr1/cfloat</code></td><tdalign="left"><codeclass="filename">tr1/cmath</code></td><tdalign="left"><codeclass="filename">tr1/cinttypes</code></td></tr><tr><tdalign="left"><codeclass="filename">tr1/climits</code></td><tdalign="left"><codeclass="filename">tr1/cstdarg</code></td><tdalign="left"><codeclass="filename">tr1/cstdbool</code></td><tdalign="left"><codeclass="filename">tr1/cstdint</code></td><tdalign="left"><codeclass="filename">tr1/cstdio</code></td></tr><tr><tdalign="left"><codeclass="filename">tr1/cstdlib</code></td><tdalign="left"><codeclass="filename">tr1/ctgmath</code></td><tdalign="left"><codeclass="filename">tr1/ctime</code></td><tdalign="left"><codeclass="filename">tr1/cwchar</code></td><tdalign="left"><codeclass="filename">tr1/cwctype</code></td></tr></tbody></table></div></div><brclass="table-break"/><p>Decimal floating-point arithmetic is available if the C++
compiler supports scalar decimal floating-point types defined via
compiler supports scalar decimal floating-point types defined via
Also included are files for the C++ ABI interface:
Also included are files for the C++ ABI interface:
</p><divclass="table"><aid="idm234605642064"></a><pclass="title"><strong>Table 3.9. C++ ABI Headers</strong></p><divclass="table-contents"><tablesummary="C++ ABI Headers"border="1"><colgroup><colalign="left"class="c1"/><colalign="left"class="c2"/></colgroup><tbody><tr><tdalign="left"><codeclass="filename">cxxabi.h</code></td><tdalign="left"><codeclass="filename">cxxabi_forced.h</code></td></tr></tbody></table></div></div><brclass="table-break"/><p>
</p><divclass="table"><aid="idm269894065504"></a><pclass="title"><strong>Table 3.9. C++ ABI Headers</strong></p><divclass="table-contents"><tablesummary="C++ ABI Headers"border="1"><colgroup><colalign="left"class="c1"/><colalign="left"class="c2"/></colgroup><tbody><tr><tdalign="left"><codeclass="filename">cxxabi.h</code></td><tdalign="left"><codeclass="filename">cxxabi_forced.h</code></td></tr></tbody></table></div></div><brclass="table-break"/><p>
</h2></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="section"><ahref="utilities.html#std.util.functors">Functors</a></span></dt><dt><spanclass="section"><ahref="pairs.html">Pairs</a></span></dt><dt><spanclass="section"><ahref="memory.html">Memory</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#std.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#allocator.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><spanclass="section"><ahref="memory.html#allocator.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#idm234604985488">Interface Design</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm234604981936">Selecting Default Allocation Policy</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm234604968640">Disabling Memory Caching</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><spanclass="section"><ahref="memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><spanclass="section"><ahref="memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#auto_ptr.limitations">Limitations</a></span></dt><dt><spanclass="section"><ahref="memory.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#shared_ptr.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="memory.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><spanclass="section"><ahref="memory.html#shared_ptr.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#idm234603392608">Class Hierarchy</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm234603370096">Thread Safety</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm234603362800">Selecting Lock Policy</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm234603348176">Related functions and classes</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#shared_ptr.using">Use</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#idm234603331760">Examples</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm234603328176">Unresolved Issues</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="traits.html">Traits</a></span></dt></dl></div><divclass="section"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aid="std.util.functors"></a>Functors</h2></div></div></div><p>If you don't know what functors are, you're not alone. Many people
</h2></div></div></div><divclass="toc"><p><strong>Table of Contents</strong></p><dlclass="toc"><dt><spanclass="section"><ahref="utilities.html#std.util.functors">Functors</a></span></dt><dt><spanclass="section"><ahref="pairs.html">Pairs</a></span></dt><dt><spanclass="section"><ahref="memory.html">Memory</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#std.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#allocator.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><spanclass="section"><ahref="memory.html#allocator.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#idm269891950848">Interface Design</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm269891947296">Selecting Default Allocation Policy</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm269891934000">Disabling Memory Caching</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><spanclass="section"><ahref="memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><spanclass="section"><ahref="memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#auto_ptr.limitations">Limitations</a></span></dt><dt><spanclass="section"><ahref="memory.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#shared_ptr.req">Requirements</a></span></dt><dt><spanclass="section"><ahref="memory.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><spanclass="section"><ahref="memory.html#shared_ptr.impl">Implementation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#idm269891814224">Class Hierarchy</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm269891791712">Thread Safety</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm269891784416">Selecting Lock Policy</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm269891769792">Related functions and classes</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#shared_ptr.using">Use</a></span></dt><dd><dl><dt><spanclass="section"><ahref="memory.html#idm269891753440">Examples</a></span></dt><dt><spanclass="section"><ahref="memory.html#idm269891749856">Unresolved Issues</a></span></dt></dl></dd><dt><spanclass="section"><ahref="memory.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><spanclass="section"><ahref="traits.html">Traits</a></span></dt></dl></div><divclass="section"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aid="std.util.functors"></a>Functors</h2></div></div></div><p>If you don't know what functors are, you're not alone. Many people
get slightly the wrong idea. In the interest of not reinventing
get slightly the wrong idea. In the interest of not reinventing
the wheel, we will refer you to the introduction to the functor
the wheel, we will refer you to the introduction to the functor