blob: 70d6086d5033cbeaec7832d34032e0e385e445fc [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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>hash_standard_resize_policy Interface</title>
<meta http-equiv="Content-Type" content=
"text/html; charset=us-ascii" />
</head>
<body>
<div id="page">
<h1><tt>hash_standard_resize_policy</tt> Interface</h1>
<p>A resize policy which delegates operations to size and
trigger policies.</p>
<p>Defined in: <a href=
"../../../../include/ext/pb_ds/hash_policy.hpp"><tt>hash_policy.hpp</tt></a></p>
<h2><a name="link1" id="link1">Template Parameters</a></h2>
<table class="c1" width="100%" border="1" summary=
"Template Parameters">
<tr>
<td width="20%" align="left"><b>Parameter</b></td>
<td width="50%" align="left"><b>Description</b></td>
<td width="30%" align="left"><b>Default Value</b></td>
</tr>
<tr>
<td>
<pre>
<a name="Size_Policy1072992366" id=
"Size_Policy1072992366"><b>class</b> Size_Policy </a>
</pre>
</td>
<td>
<p>Size policy type.</p>
</td>
<td><a href=
"hash_exponential_size_policy.html"><span class="c2"><tt>hash_exponential_size_policy</tt></span></a></td>
</tr>
<tr>
<td>
<pre>
<a name="Trigger_Policy3611271815" id=
"Trigger_Policy3611271815"><b>class</b> Trigger_Policy </a>
</pre>
</td>
<td>
<p>Trigger policy type.</p>
</td>
<td><a href=
"hash_load_check_resize_trigger.html"><span class=
"c2"><tt>hash_load_check_resize_trigger</tt></span></a></td>
</tr>
<tr>
<td>
<pre>
<a name="External_Size_Access1380482982" id=
"External_Size_Access1380482982"><b>bool</b> External_Size_Access </a>
</pre>
</td>
<td>
<p>Indicates whether physical sizes can be accessed
externally.</p>
</td>
<td><tt><b>false</b></tt></td>
</tr>
<tr>
<td>
<pre>
<a name="Size_Type42920436" id=
"Size_Type42920436"><b>typename</b> Size_Type </a>
</pre>
</td>
<td>
<p>Size type.</p>
</td>
<td>size_t</td>
</tr>
</table>
<h2><a name="link2" id="link2">Base Classes</a></h2>
<table class="c1" width="100%" border="1" summary="Bases">
<tr>
<td width="80%" align="left"><b>Class</b></td>
<td width="20%" align="left"><b>Derivation Type</b></td>
</tr>
<tr>
<td>
<pre>
<a href="#Size_Policy1072992366"><tt>Size_Policy</tt></a>
</pre>
</td>
<td>
<p>public</p>
</td>
</tr>
<tr>
<td>
<pre>
<a href="#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a>
</pre>
</td>
<td>
<p>public</p>
</td>
</tr>
</table>
<h2><a name="link3" id="link3">Public Types and
Constants</a></h2>
<h3><a name="link4" id="link4">General Definitions</a></h3>
<table class="c1" width="100%" border="1" summary="Types">
<tr>
<td width="30%" align="left"><b>Type</b></td>
<td width="55%" align="left"><b>Definition</b></td>
<td width="15%" align="left"><b>Description</b></td>
</tr>
<tr>
<td>
<pre>
<a name="size_type55424436" id="size_type55424436">size_type</a>
</pre>
</td>
<td>
<pre>
<a href="#Size_Type42920436"><tt>Size_Type</tt></a>
</pre>
</td>
<td>
<p>Size type.</p>
</td>
</tr>
</table>
<h3><a name="link5" id="link5">Policy Definitions</a></h3>
<table class="c1" width="100%" border="1" summary="Types">
<tr>
<td width="30%" align="left"><b>Type</b></td>
<td width="55%" align="left"><b>Definition</b></td>
<td width="15%" align="left"><b>Description</b></td>
</tr>
<tr>
<td>
<pre>
<a name="trigger_policy4019166151" id=
"trigger_policy4019166151">trigger_policy</a>
</pre>
</td>
<td>
<pre>
<a href="#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a>
</pre>
</td>
<td>
<p>Trigger policy type.</p>
</td>
</tr>
<tr>
<td>
<pre>
<a name="size_policy1385592366" id=
"size_policy1385592366">size_policy</a>
</pre>
</td>
<td>
<pre>
<a href="#Size_Policy1072992366"><tt>Size_Policy</tt></a>
</pre>
</td>
<td>
<p>Size policy type.</p>
</td>
</tr>
<tr>
<td>
<pre>
<a name="external_size_access4043083014" id=
"external_size_access4043083014">external_size_access</a>
</pre>
</td>
<td>
<pre>
<a href=
"#External_Size_Access1380482982"><tt>External_Size_Access</tt></a>
</pre>
</td>
<td>
<p>Indicates whether sizes can be accessed
externally.</p>
</td>
</tr>
</table>
<h2><a name="link6" id="link6">Public Methods</a></h2>
<h3><a name="link7" id="link7">Constructors, Destructor, and
Related</a></h3>
<table class="c1" width="100%" border="1" summary="Methods">
<tr>
<td width="45%" align="left"><b>Method</b></td>
<td width="55%" align="left"><b>Description</b></td>
</tr>
<tr>
<td>
<pre>
hash_standard_resize_policy
()
</pre>
</td>
<td>
<p>Default constructor.</p>
</td>
</tr>
<tr>
<td>
<pre>
hash_standard_resize_policy
(<b>const</b> <a href=
"#Size_Policy1072992366"><tt>Size_Policy</tt></a> &amp;r_size_policy)
</pre>
</td>
<td>
<p>constructor taking some policies <span class=
"c1"><tt>r_size_policy</tt></span> will be copied by the
<a href="#Size_Policy1072992366"><tt>Size_Policy</tt></a>
object of this object.</p>
</td>
</tr>
<tr>
<td>
<pre>
hash_standard_resize_policy
(<b>const</b> <a href=
"#Size_Policy1072992366"><tt>Size_Policy</tt></a> &amp;r_size_policy,
<b>const</b> <a href=
"#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a> &amp;r_trigger_policy)
</pre>
</td>
<td>
<p>constructor taking some policies. <span class=
"c1"><tt>r_size_policy</tt></span> will be copied by the
<a href="#Size_Policy1072992366"><tt>Size_Policy</tt></a>
object of this object. <span class=
"c1"><tt>r_trigger_policy</tt></span> will be copied by
the <a href=
"#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a>
object of this object.</p>
</td>
</tr>
<tr>
<td>
<pre>
<b>virtual</b>
~hash_standard_resize_policy
()
</pre>
</td>
<td>
<p>Destructor.</p>
</td>
</tr>
<tr>
<td>
<pre>
<b>inline</b> <b>void</b>
swap
(<span class=
"c2"><tt>hash_standard_resize_policy</tt></span> &amp;other)
</pre>
</td>
<td>
<p>Swaps content.</p>
</td>
</tr>
</table>
<h3><a name="link8" id="link8">Policy Access Methods</a></h3>
<table class="c1" width="100%" border="1" summary="Methods">
<tr>
<td width="45%" align="left"><b>Method</b></td>
<td width="55%" align="left"><b>Description</b></td>
</tr>
<tr>
<td>
<pre>
<a href="#Size_Policy1072992366"><tt>Size_Policy</tt></a> &amp;
get_size_policy
()
</pre>
</td>
<td>
<p>Access to the <a href=
"#Size_Policy1072992366"><tt>Size_Policy</tt></a> object
used.</p>
</td>
</tr>
<tr>
<td>
<pre>
<b>const</b> <a href=
"#Size_Policy1072992366"><tt>Size_Policy</tt></a> &amp;
get_size_policy
() <b>const</b>
</pre>
</td>
<td>
<p>Const access to the <a href=
"#Size_Policy1072992366"><tt>Size_Policy</tt></a> object
used.</p>
</td>
</tr>
<tr>
<td>
<pre>
<a href=
"#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a> &amp;
get_trigger_policy
()
</pre>
</td>
<td>
<p>Access to the <a href=
"#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a>
object used.</p>
</td>
</tr>
<tr>
<td>
<pre>
<b>const</b> <a href=
"#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a> &amp;
get_trigger_policy
() <b>const</b>
</pre>
</td>
<td>
<p>Access to the <a href=
"#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a>
object used.</p>
</td>
</tr>
</table>
<h3><a name="link9" id="link9">Size Access Methods</a></h3>
<p>These methods are available only if the external size
parameter indicates that external size access is allowed.</p>
<table class="c1" width="100%" border="1" summary="Methods">
<tr>
<td width="45%" align="left"><b>Method</b></td>
<td width="55%" align="left"><b>Description</b></td>
</tr>
<tr>
<td>
<pre>
<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a>
get_actual_size
() <b>const</b>
</pre>
</td>
<td>
<p>Returns the actual size of the container.</p>
<p>This method returns the number of entries (used and
unused) in the container. It is different from the
container's size method, which returns the number of used
entries. Calling this method will not compile when
<a href=
"#External_Size_Access1380482982"><tt>External_Size_Access</tt></a>
== <tt><b>false</b></tt>.</p>
</td>
</tr>
<tr>
<td>
<pre>
<b>void</b>
resize
(<a href=
"#size_type55424436"><tt>size_type</tt></a> suggested_new_size)
</pre>
</td>
<td>
<p>Resizes the container to <span class=
"c1"><tt>suggested_new_size</tt></span>, a suggested size
(the actual size will be determined by the <a href=
"#Size_Policy1072992366"><tt>Size_Policy</tt></a>
object).</p>
<p>Calling this method will not compile when <a href=
"#External_Size_Access1380482982"><tt>External_Size_Access</tt></a>
== <tt><b>false</b></tt>.</p>
</td>
</tr>
</table>
<h2><a name="link10" id="link10">Protected Methods</a></h2>
<h3><a name="link11" id="link11">Insert Search
Notifications.</a></h3>
<p>Notifications called during an insert operation.</p>
<table class="c1" width="100%" border="1" summary="Methods">
<tr>
<td width="45%" align="left"><b>Method</b></td>
<td width="55%" align="left"><b>Description</b></td>
</tr>
<tr>
<td>
<pre>
<b>inline</b> <b>void</b>
notify_insert_search_start
()
</pre>
</td>
<td>
<p>Notifies a search started.</p>
</td>
</tr>
<tr>
<td>
<pre>
<b>inline</b> <b>void</b>
notify_insert_search_collision
()
</pre>
</td>
<td>
<p>Notifies a search encountered a collision.</p>
</td>
</tr>
<tr>
<td>
<pre>
<b>inline</b> <b>void</b>
notify_insert_search_end
()
</pre>
</td>
<td>
<p>Notifies a search ended.</p>
</td>
</tr>
</table>
<h3><a name="link12" id="link12">Find Search
Notifications.</a></h3>
<p>Notifications called during a find operation.</p>
<table class="c1" width="100%" border="1" summary="Methods">
<tr>
<td width="45%" align="left"><b>Method</b></td>
<td width="55%" align="left"><b>Description</b></td>
</tr>
<tr>
<td>
<pre>
<b>inline</b> <b>void</b>
notify_find_search_start
()
</pre>
</td>
<td>
<p>Notifies a search started.</p>
</td>
</tr>
<tr>
<td>
<pre>
<b>inline</b> <b>void</b>
notify_find_search_collision
()
</pre>
</td>
<td>
<p>Notifies a search encountered a collision.</p>
</td>
</tr>
<tr>
<td>
<pre>
<b>inline</b> <b>void</b>
notify_find_search_end
()
</pre>
</td>
<td>
<p>Notifies a search ended.</p>
</td>
</tr>
</table>
<h3><a name="link13" id="link13">Erase Search
Notifications.</a></h3>
<p>Notifications called during an insert operation.</p>
<table class="c1" width="100%" border="1" summary="Methods">
<tr>
<td width="45%" align="left"><b>Method</b></td>
<td width="55%" align="left"><b>Description</b></td>
</tr>
<tr>
<td>
<pre>
<b>inline</b> <b>void</b>
notify_erase_search_start
()
</pre>
</td>
<td>
<p>Notifies a search started.</p>
</td>
</tr>
<tr>
<td>
<pre>
<b>inline</b> <b>void</b>
notify_erase_search_collision
()
</pre>
</td>
<td>
<p>Notifies a search encountered a collision.</p>
</td>
</tr>
<tr>
<td>
<pre>
<b>inline</b> <b>void</b>
notify_erase_search_end
()
</pre>
</td>
<td>
<p>Notifies a search ended.</p>
</td>
</tr>
</table>
<h3><a name="link14" id="link14">Content Change
Notifications</a></h3>
<p>Notifications called when the content of the table changes
in a way that can affect the resize policy.</p>
<table class="c1" width="100%" border="1" summary="Methods">
<tr>
<td width="45%" align="left"><b>Method</b></td>
<td width="55%" align="left"><b>Description</b></td>
</tr>
<tr>
<td>
<pre>
<b>inline</b> <b>void</b>
notify_inserted
(<a href="#size_type55424436"><tt>size_type</tt></a> num_e)
</pre>
</td>
<td>
<p>Notifies an element was inserted.</p>
</td>
</tr>
<tr>
<td>
<pre>
<b>inline</b> <b>void</b>
notify_erased
(<a href="#size_type55424436"><tt>size_type</tt></a> num_e)
</pre>
</td>
<td>
<p>Notifies an element was erased.</p>
</td>
</tr>
<tr>
<td>
<pre>
<b>void</b>
notify_cleared
()
</pre>
</td>
<td>
<p>Notifies the table was cleared.</p>
</td>
</tr>
</table>
<h3><a name="link15" id="link15">Size Change
Notifications</a></h3>
<p>Notifications called when the table changes size.</p>
<table class="c1" width="100%" border="1" summary="Methods">
<tr>
<td width="45%" align="left"><b>Method</b></td>
<td width="55%" align="left"><b>Description</b></td>
</tr>
<tr>
<td>
<pre>
<b>void</b>
notify_resized
(<a href="#size_type55424436"><tt>size_type</tt></a> new_size)
</pre>
</td>
<td>
<p>Notifies the table was resized to <span class=
"c1"><tt>new_size</tt></span>.</p>
</td>
</tr>
</table>
<h3><a name="link16" id="link16">Queries</a></h3>
<p>Called to query whether/how to resize.</p>
<table class="c1" width="100%" border="1" summary="Methods">
<tr>
<td width="45%" align="left"><b>Method</b></td>
<td width="55%" align="left"><b>Description</b></td>
</tr>
<tr>
<td>
<pre>
<b>inline</b> <b>bool</b>
is_resize_needed
() <b>const</b>
</pre>
</td>
<td>
<p>Queries whether a resize is needed.</p>
</td>
</tr>
<tr>
<td>
<pre>
<a href="#size_type55424436"><tt>size_type</tt></a>
get_new_size
(<a href="#size_type55424436"><tt>size_type</tt></a> size,
<a href=
"#size_type55424436"><tt>size_type</tt></a> num_used_e) <b>const</b>
</pre>
</td>
<td>
<p>Queries what the new <span class=
"c1"><tt>size</tt></span> should be, when the container
is resized naturally. The current size of the container
is <span class="c1"><tt>size</tt></span>, and the number
of used entries within the container is <span class=
"c1"><tt>num_used_e</tt></span>.</p>
</td>
</tr>
</table>
<h2><a name="link17" id="link17">Private Methods</a></h2>
<h3><a name="link18" id="link18">Overrides</a></h3>
<table class="c1" width="100%" border="1" summary="Methods">
<tr>
<td width="45%" align="left"><b>Method</b></td>
<td width="55%" align="left"><b>Description</b></td>
</tr>
<tr>
<td>
<pre>
<b>virtual</b> <b>void</b>
do_resize
(<a href="#size_type55424436"><tt>size_type</tt></a> new_size)
</pre>
</td>
<td>
<p>Resizes to <span class=
"c1"><tt>new_size</tt></span>.</p>
</td>
</tr>
</table>
</div>
</body>
</html>