<!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= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/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> &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> &r_size_policy, <b>const</b> <a href= "#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a> &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> &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> & 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> & 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> & 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> & 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>