<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta name="generator" content=
 "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />

<title>Interface</title>
<meta http-equiv="Content-Type" content=
 "text/html; charset=us-ascii" />
</head>

<body>
<div id="page">
<h1>Interface Specifics</h1>

<p>Following are the library's interface specifics. <a href=
    "tutorial.html">Short Tutorial</a> is a short tutorial, and
    <a href="concepts.html">Concepts</a> describes some
    concepts.</p>
    <hr />

    <h2><a name="namespaces" id="namespaces">Namespace</a></h2>

    <p>All code is enclosed in namespace <tt>pb_ds</tt>. Nested within
    this is namespace <tt>detail</tt>, which contains the parts of this
    library that are considered implementation details.</p>
    <hr />

    <h2><a name="containers" id="containers">Containers</a></h2>

    <h3><a name="containers_assoc" id=
    "containers_assoc">Associative Containers</a></h3>

    <ol>
      <li><a href=
      "container_base.html"><tt>container_base</tt></a> -
      abstract base class for associative containers.</li>

      <li>Hash-based:

        <ol>
          <li><a href=
          "basic_hash_table.html"><tt>basic_hash_table</tt></a>
          - abstract base class for hash-based
          containers</li>

          <li><a href=
          "cc_hash_table.html"><tt>cc_hash_table</tt></a>
          - concrete collision-chaining hash-based
          containers</li>

          <li><a href=
          "gp_hash_table.html"><tt>gp_hash_table</tt></a>
          - concrete (general) probing hash-based
          containers</li>
        </ol>
      </li>

      <li>Tree-based:

        <ol>
          <li><a href=
          "basic_tree.html"><tt>basic_tree</tt></a>
          - abstract base class for tree and trie based
          containers</li>

          <li><a href=
          "tree.html"><tt>tree</tt></a>
          - concrete base class for tree-based
          containers</li>

          <li><a href=
          "trie.html"><tt>trie</tt></a>
          - concrete base class for trie-based
          containers</li>
        </ol>
      </li>

      <li>List-based:

        <ol>
          <li><a href=
          "list_update.html"><tt>list_update</tt></a> -
          singly-linked list with update-policy container</li>
        </ol>
      </li>
    </ol>

    <h3><a name="containers_pq" id="containers_pq">Priority
    Queues</a></h3>

    <ol>
      <li><a href="priority_queue.html"><tt>priority_queue</tt></a>
      - priority queue</li>
    </ol>
    <hr />

    <h2><a name="tag" id="tag">Container Tags and
    Traits</a></h2>

    <h3><a name="ds_ts" id="ds_ts">Container Tags</a></h3>

    <h4><a name="ds_ts_common" id="ds_ts_common">Common</a></h4>

    <ol>
      <li><a href="container_tag.html"><tt>container_tag</tt></a> -
      base class for data structure tags</li>
    </ol>

    <h4><a name="ds_ts_assoc" id=
    "ds_ts_assoc">Associative-Containers</a></h4>

     <ol>
      <li><a href=
      "associative_container_tag.html"><tt>associative_container_tag</tt></a> -
      base class for associative-container data structure tags</li>

      <li><a href=
      "basic_hash_tag.html"><tt>basic_hash_tag</tt></a> -
      base class for hash-based structure tags</li>

      <li><a href="cc_hash_tag.html"><tt>cc_hash_tag</tt></a>
      - collision-chaining hash structure tag</li>

      <li><a href="gp_hash_tag.html"><tt>gp_hash_tag</tt></a>
      - (general) probing hash structure tag</li>

      <li><a href=
      "basic_tree_tag.html"><tt>basic_tree_tag</tt></a>
      - base class for tree-like structure tags</li>

      <li><a href=
      "tree_tag.html"><tt>tree_tag</tt></a> -
      base class for tree structure tags</li>

      <li><a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
      - red-black tree structure tag/li&gt;</li>

      <li><a href=
      "splay_tree_tag.html"><tt>splay_tree_tag</tt></a> -
      splay tree structure tag</li>

      <li><a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a>
      - ordered-vector tree structure tag</li>

      <li><a href=
      "trie_tag.html"><tt>trie_tag</tt></a> -
      trie structure tag</li>

      <li><a href=
      "pat_trie_tag.html"><tt>pat_trie_tag</tt></a> -
      PATRICIA trie structure tag</li>

      <li><a href="list_update_tag.html"><tt>list_update_tag</tt></a> - list
      (with updates) structure tag</li>
    </ol>

    <h4><a name="ds_ts_pq" id="ds_ts_pq">Priority-Queues</a></h4>

     <ol>
      <li><a href=
      "priority_queue_tag.html"><tt>priority_queue_tag</tt></a> - base
      class for priority-queue data structure tags</li>

      <li><a href=
      "pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -
      pairing-heap structure tag.</li>

      <li><a href=
      "binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a>
      - binomial-heap structure tag</li>

      <li><a href=
      "rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a>
      - redundant-counter binomial-heap (<i>i.e.</i>, a heap where
      binomial trees form a sequence that is similar to a
      de-amortized bit-addition algorithm) structure tag</li>

      <li><a href=
      "binary_heap_tag.html"><tt>binary_heap_tag</tt></a> -
      binary heap (based on an array or an array of nodes)
      structure tag</li>

      <li><a href=
      "thin_heap_tag.html"><tt>thin_heap_tag</tt></a> - thin
      heap (an alternative [<a href=
      "references.html#kt99fat_heaps">kt99fat_heaps</a>] to
      Fibonacci heap) data structure tag.</li>
    </ol>

    <h3><a name="ds_inv_tag" id="ds_inv_tag">Invalidation-Guarantee
    Tags</a></h3>

    <ol>
      <li><a href=
      "basic_invalidation_guarantee.html"><tt>basic_invalidation_guarantee</tt></a>
      - weakest invalidation guarantee</li>

      <li><a href=
      "point_invalidation_guarantee.html"><tt>point_invalidation_guarantee</tt></a>
      - stronger invalidation guarantee</li>

      <li><a href=
      "range_invalidation_guarantee.html"><tt>range_invalidation_guarantee</tt></a>
      - strongest invalidation guarantee</li>
    </ol>

    <h3><a name="container_traits" id="container_traits">Container
    Traits</a></h3>

    <ol>
      <li><a href="pq_container_traits.html"><tt>container_traits</tt></a> -
      traits for determining underlying data structure 
      properties</li>
    </ol>
    <hr />

    <h2><a name="ds_policy_classes" id=
    "ds_policy_classes">Container Policy Classes</a></h2>

    <h3><a name="hash_related_policies" id=
    "hash_related_policies">Hash Policies</a></h3>

    <h4>Hash and Probe Policies</h4>

    <ol>
      <li>Hash Functions:

        <ol>
          <li><a href="null_hash_fn.html"><tt>null_hash_fn</tt></a>
          - type indicating one-step range-hashing</li>
        </ol>
      </li>

      <li>Range-Hashing Functions:

        <ol>
          <li><a href="sample_range_hashing.html">Sample
          range-hashing function</a> - interface required of a
          range-hashing functor</li>

          <li><a href=
          "direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
          - (bit) mask-based range hashing functor</li>

          <li><a href=
          "direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
          - modulo-based range hashing functor</li>
        </ol>
      </li>

      <li>Probe Functions:

        <ol>
          <li><a href="sample_probe_fn.html">Sample probe
          function</a> - interface required of a probe functor</li>

          <li><a href=
          "null_probe_fn.html"><tt>null_probe_fn</tt></a> - type
          indicating one-step ranged-probe</li>

          <li><a href=
          "linear_probe_fn.html"><tt>linear_probe_fn</tt></a> -
          linear-probe functor</li>

          <li><a href=
          "quadratic_probe_fn.html"><tt>quadratic_probe_fn</tt></a>-
          quadratic-probe functor</li>
        </ol>
      </li>

      <li>Ranged-Hash Functions:

        <ol>
          <li><a href="sample_ranged_hash_fn.html">Sample
          ranged-hash function</a> - interface required of a
          ranged-hash functor</li>
        </ol>
      </li>

      <li>Ranged-Probe Functions:

        <ol>
          <li><a href="sample_ranged_probe_fn.html">Sample
          ranged-probe function</a> - interface required of a
          ranged-probe functor</li>
        </ol>
      </li>
    </ol>

    <h4>Resize Policies</h4>
    <ol>
      <li>Resize Policies:

        <ol>
          <li><a href="sample_resize_policy.html">Sample resize
          policy</a> - interface required of a resize policy</li>

          <li><a href=
          "hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
          - standard resize policy</li>
        </ol>
      </li>

      <li>Size Policies:

        <ol>
          <li><a href="sample_size_policy.html">Sample size
          policy</a> - interface required of a size policy</li>

          <li><a href=
          "hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
          - exponential size policy (typically used with (bit) mask
          range-hashing)</li>

          <li><a href=
          "hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
          - prime size policy (typically used with modulo
          range-hashing)</li>
        </ol>
      </li>

      <li>Trigger Policies:

        <ol>
          <li><a href="sample_resize_trigger.html">Sample trigger
          policy</a> - interface required of a trigger policy</li>

          <li><a href=
          "hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
          - trigger policy based on load checks</li>

          <li><a href=
          "cc_hash_max_collision_check_resize_trigger.html"><tt>cc_hash_max_collision_check_resize_trigger</tt></a>
          - trigger policy based on collision checks</li>
        </ol>
      </li>
    </ol>

    <h3><a name="tree_related_policies" id=
    "tree_related_policies">Tree Policies</a></h3>

    <h4>Tree Node-Update Policies</h4>


<ol>
<li><a href="sample_tree_node_update.html">Sample node
updater policy</a> - interface required of a tree
node-updating functor</li>

<li><a href=
     "null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
- null policy indicating no updates are required</li>

<li><a href=
     "tree_order_statistics_node_update.html"><tt>tree_order_statistics_node_update</tt></a>
- updater enabling order statistics queries</li>
</ol>

<h3><a name="trie_related_policies" id=
     "trie_related_policies">Trie Policies</a></h3>


<h4>Trie Element-Access Traits</h4>

    <ol>
      <li><a href="sample_trie_e_access_traits.html">Sample
      element-access traits</a> - interface required of
      element-access traits</li>

      <li><a href=
      "string_trie_e_access_traits.html"><tt>string_trie_e_access_traits</tt></a>
      - String element-access traits</li>
    </ol>

    <h4>Trie Node-Update Policies</h4>


<ol>
<li><a href="sample_trie_node_update.html">Sample node
updater policy</a> - interface required of a trie node
updater</li>

<li><a href=
     "null_trie_node_update.html"><tt>null_trie_node_update</tt></a>
- null policy indicating no updates are required</li>

<li><a href=
     "trie_prefix_search_node_update.html"><tt>trie_prefix_search_node_update</tt></a>
- updater enabling prefix searches</li>

<li><a href=
     "trie_order_statistics_node_update.html"><tt>trie_order_statistics_node_update</tt></a>
- updater enabling order statistics queries</li>
</ol>

<h3><a name="list_related_policies" id=
     "list_related_policies">List Policies</a></h3>

<h4>List Update Policies</h4>


    <ol>
      <li><a href="sample_update_policy.html">Sample list update
      policy</a> - interface required of a list update policy</li>

      <li><a href=
      "move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
      - move-to-front update algorithm</li>

      <li><a href=
      "counter_lu_policy.html"><tt>counter_lu_policy</tt></a> -
      counter update algorithm</li>
    </ol>

    <h3><a name="ds_pol" id="ds_pol">Mapped-Type Policies</a></h3>


    <ol>
      <li><a href=
      "null_mapped_type.html"><tt>null_mapped_type</tt></a> - data
      policy indicating that a container is a "set"</li>
    </ol>
    <hr />

    <h2><a name="exceptions" id="exceptions">Exceptions</a></h2>


    <ol>
      <li><a href="exceptions.html"><tt>container_error</tt></a>
      - base class for all policy-based data structure errors</li>

      <li><a href=
      "insert_error.html"><tt>insert_error</tt></a></li>

      <li><a href="join_error.html"><tt>join_error</tt></a></li>

      <li><a href=
      "resize_error.html"><tt>resize_error</tt></a></li>
    </ol>

  </div>
</body>
</html>
