<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE>template<class K, class V> class EST_THash</TITLE> <META NAME="GENERATOR" CONTENT="DOC++ 3.4.6"> </HEAD> <body bgcolor="#ffffff" link="#0000ff" vlink="#dd0000" text="#000088" alink="9000ff"> <A HREF = "http://www.cstr.ed.ac.uk/"> <IMG align=left BORDER=0 SRC = "cstr.gif"></A> <A HREF="http://www.cstr.ed.ac.uk/projects/speech_tools.html"> <IMG BORDER=0 ALIGN=right SRC="est.jpg" width=150 height=93></A> <br> <br clear=left> <p align=right> In file ../include/EST_THash.h:<TABLE BORDER=0><TR> <TD VALIGN=TOP><H2>template<class K, class V> class <A HREF="#DOC.DOCU">EST_THash</A></H2></TD></H2></TD></TR></TABLE> <BLOCKQUOTE>An open hash table.</BLOCKQUOTE> <HR> <H2>Inheritance:</H2> <APPLET CODE="ClassGraph.class" WIDTH=600 HEIGHT=95> <param name=classes value="CEST_HashFunctions,MEST_HashFunctions.html,CEST_THash,MEST_THash.html,CEST_TStringHash,MEST_TStringHash.html"> <param name=before value="M,M,M^_"> <param name=after value="Md-,M,M"> <param name=indent value="0,1,1"> <param name=arrowdir value="down"> </APPLET> <HR> <DL> <P><TABLE> <DT><H3>Public Classes</H3><DD><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.20"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>Pair Iteration</B> <BR> <I></I> <P><TABLE> <TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.20.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>struct </TD><TD><B>IPointer_s</B> <BR> <I>A position in the table is given by a bucket number and a pointer into the bucket</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.20.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>skip_blank</B> (IPointer &ip) const <BR> <I>Shift to point at something</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.20.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>point_to_first</B> (IPointer &ip) const <BR> <I>Go to start of the table</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.20.4"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>move_pointer_forwards</B> (IPointer &ip) const <BR> <I>Move pointer forwards, at the end of the bucket, move down</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.20.5"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>bool </TD><TD><B>points_to_something</B> (const IPointer &ip) const <BR> <I>We are at the end if the pointer ever becomes NULL</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.20.6"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_Hash_Pair.html">EST_Hash_Pair</A><K, V> & </TD><TD><B>points_at</B> (const IPointer &ip)<BR> <I>Return the contents of this entry</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.20.7"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>typedef <!1><A HREF="EST_Hash_Pair.html">EST_Hash_Pair</A><K, V> </TD><TD><B>Entry</B> <BR> <I>An entry returned by the iterator is a key value pair</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.20.8"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>typedef EST_TStructIterator< <!1><A HREF="EST_THash.html">EST_THash</A><K, V>, IPointer, <!1><A HREF="EST_Hash_Pair.html">EST_Hash_Pair</A><K, V> > </TD><TD><B>Entries</B> <BR> <I>Give the iterator a sensible name</I> </TD></TR></TABLE></P> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.21"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>Key Iteration</B> <BR> <I></I> <P><TABLE> <TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.21.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>struct </TD><TD><B>IPointer_k_s</B> <BR> <I>A position in the table is given by a bucket number and a pointer into the bucket</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.21.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>skip_blank</B> (IPointer_k &ip) const <BR> <I>Shift to point at something</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.21.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>point_to_first</B> (IPointer_k &ip) const <BR> <I>Go to start of the table</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.21.4"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>move_pointer_forwards</B> (IPointer_k &ip) const <BR> <I>Move pointer forwards, at the end of the bucket, move down</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.21.5"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>bool </TD><TD><B>points_to_something</B> (const IPointer_k &ip) const <BR> <I>We are at the end if the pointer ever becomes NULL</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.21.6"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>K& </TD><TD><B>points_at</B> (const IPointer_k &ip)<BR> <I>Return the key of this entry</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.21.7"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>typedef K </TD><TD><B>KeyEntry</B> <BR> <I>An entry returned by this iterator is just a key</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.21.8"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>typedef <!1><A HREF="EST_TIterator.html">EST_TIterator</A>< <!1><A HREF="EST_THash.html">EST_THash</A><K, V>, IPointer_k, K > </TD><TD><B>KeyEntries</B> <BR> <I>Give the iterator a sensible name</I> </TD></TR></TABLE></P> </TD></TR></TABLE></P> <P><TABLE> <DT><H3>Public Methods</H3><DD><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.6"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>EST_THash</B> (int <!1><A HREF="EST_String.html#DOC.75.10">size</A>, unsigned int (*hash_function)(const K &<!1><A HREF="EST_TKVL.html#DOC.2.8.6">key</A>, unsigned int <!1><A HREF="EST_String.html#DOC.75.10">size</A>)= NULL)<BR> <I>Create a table with the given number of buckets.</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.7"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>EST_THash</B> (const <!1><A HREF="EST_THash.html#DOC.91.3.7">EST_THash</A><K, V> &from)<BR> <I>Create a copy</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.8"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>~EST_THash</B> (void)<BR> <I>Destroy the table</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.9"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>clear</B> (void)<BR> <I>Empty the table</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.10"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>unsigned int </TD><TD><B>num_entries</B> (void) const <BR> <I>Return the total number of entries in the table</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.11"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>present</B> (const K &<!1><A HREF="EST_TKVL.html#DOC.2.8.6">key</A>) const <BR> <I>Does the key have an entry?</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.12"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>V& </TD><TD><B>val</B> (const K &<!1><A HREF="EST_TKVL.html#DOC.2.8.6">key</A>, int &found) const <BR> <I>Return the value associated with the key.</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.13"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>V& </TD><TD><B>val</B> (const K &<!1><A HREF="EST_TKVL.html#DOC.2.8.6">key</A>) const <BR> <I>Return the value associated with the key</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.14"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>copy</B> (const <!1><A HREF="EST_THash.html">EST_THash</A><K, V> &from)<BR> <I>Copy all entries</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.15"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>map</B> (void (*func)(K&, V&))<BR> <I>Apply <parameter>func</parameter> to each entry in the table</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.16"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>add_item</B> (const K &<!1><A HREF="EST_TKVL.html#DOC.2.8.6">key</A>, const V &value, int no_search = 0)<BR> <I>Add an entry to the table</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.17"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>remove_item</B> (const K &rkey, int quiet = 0)<BR> <I>Remove an entry from the table</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.18"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_THash.html">EST_THash</A><K,V> & </TD><TD><B>operator = </B> (const <!1><A HREF="EST_THash.html">EST_THash</A><K, V> &from)<BR> <I>Assignment is a copy operation</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.91.3.19"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>dump</B> (ostream &stream, int all=0)<BR> <I>Print the table to <parameter>stream</parameter> in a human readable format</I> </TD></TR></TABLE></P> </DL> <HR><H3>Inherited from <A HREF="EST_HashFunctions.html">EST_HashFunctions</A>:</H3> <DL> <P><DL> <DT><H3>Public Methods</H3><DD><DT> <IMG ALT="o" SRC=icon2.gif>static unsigned int <B>DefaultHash</B>(const void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>, size_t <!1><A HREF="EST_String.html#DOC.75.10">size</A>, unsigned int <!1><A HREF="EST_TVector.html#DOC.15.1.20.3">n</A>) <DT> <IMG ALT="o" SRC=icon2.gif>static unsigned int <B>StringHash</B>(const <!1><A HREF="EST_String.html">EST_String</A> &<!1><A HREF="EST_TKVL.html#DOC.2.8.6">key</A>, unsigned int <!1><A HREF="EST_String.html#DOC.75.10">size</A>) </DL></P> </DL> <A NAME="DOC.DOCU"></A> <HR> <H2>Documentation</H2> <BLOCKQUOTE>An open hash table. The number of buckets should be set to allow enough space that there are relatively few entries per bucket on average.</BLOCKQUOTE> <DL> <A NAME="EST_THash"></A> <A NAME="DOC.91.3.6"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> EST_THash(int <!1><A HREF="EST_String.html#DOC.75.10">size</A>, unsigned int (*hash_function)(const K &<!1><A HREF="EST_TKVL.html#DOC.2.8.6">key</A>, unsigned int <!1><A HREF="EST_String.html#DOC.75.10">size</A>)= NULL)</B></TT> <DD>Create a table with the given number of buckets. Optionally setting a custom hash function. <DL><DT><DD></DL><P> <A NAME="EST_THash"></A> <A NAME="DOC.91.3.7"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> EST_THash(const <!1><A HREF="EST_THash.html#DOC.91.3.7">EST_THash</A><K, V> &from)</B></TT> <DD>Create a copy <DL><DT><DD></DL><P> <A NAME="~EST_THash"></A> <A NAME="DOC.91.3.8"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> ~EST_THash(void)</B></TT> <DD>Destroy the table <DL><DT><DD></DL><P> <A NAME="clear"></A> <A NAME="DOC.91.3.9"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void clear(void)</B></TT> <DD>Empty the table <DL><DT><DD></DL><P> <A NAME="num_entries"></A> <A NAME="DOC.91.3.10"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>unsigned int num_entries(void) const </B></TT> <DD>Return the total number of entries in the table <DL><DT><DD></DL><P> <A NAME="present"></A> <A NAME="DOC.91.3.11"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int present(const K &<!1><A HREF="EST_TKVL.html#DOC.2.8.6">key</A>) const </B></TT> <DD>Does the key have an entry? <DL><DT><DD></DL><P> <A NAME="val"></A> <A NAME="DOC.91.3.12"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>V& val(const K &<!1><A HREF="EST_TKVL.html#DOC.2.8.6">key</A>, int &found) const </B></TT> <DD>Return the value associated with the key. <parameter>found</parameter> is set to whether such an entry was found. <DL><DT><DD></DL><P> <A NAME="val"></A> <A NAME="DOC.91.3.13"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>V& val(const K &<!1><A HREF="EST_TKVL.html#DOC.2.8.6">key</A>) const </B></TT> <DD>Return the value associated with the key <DL><DT><DD></DL><P> <A NAME="copy"></A> <A NAME="DOC.91.3.14"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void copy(const <!1><A HREF="EST_THash.html">EST_THash</A><K, V> &from)</B></TT> <DD>Copy all entries <DL><DT><DD></DL><P> <A NAME="map"></A> <A NAME="DOC.91.3.15"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void map(void (*func)(K&, V&))</B></TT> <DD>Apply <parameter>func</parameter> to each entry in the table <DL><DT><DD></DL><P> <A NAME="add_item"></A> <A NAME="DOC.91.3.16"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int add_item(const K &<!1><A HREF="EST_TKVL.html#DOC.2.8.6">key</A>, const V &value, int no_search = 0)</B></TT> <DD>Add an entry to the table <DL><DT><DD></DL><P> <A NAME="remove_item"></A> <A NAME="DOC.91.3.17"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int remove_item(const K &rkey, int quiet = 0)</B></TT> <DD>Remove an entry from the table <DL><DT><DD></DL><P> <A NAME="operator = "></A> <A NAME="DOC.91.3.18"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_THash.html">EST_THash</A><K,V> & operator = (const <!1><A HREF="EST_THash.html">EST_THash</A><K, V> &from)</B></TT> <DD>Assignment is a copy operation <DL><DT><DD></DL><P> <A NAME="dump"></A> <A NAME="DOC.91.3.19"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void dump(ostream &stream, int all=0)</B></TT> <DD>Print the table to <parameter>stream</parameter> in a human readable format <DL><DT><DD></DL><P> <A NAME="Pair Iteration"></A> <A NAME="DOC.91.3.20"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Pair Iteration</B></TT> <DD> This iterator steps through the table returning key-value pairs. <DL><DT><DT><B>Friends:</B><DD> class EST_TStructIterator< <!1><A HREF="EST_THash.html">EST_THash</A><K, V>, IPointer, <!1><A HREF="EST_Hash_Pair.html">EST_Hash_Pair</A><K, V> ><BR> class EST_TRwStructIterator< <!1><A HREF="EST_THash.html">EST_THash</A><K, V>, IPointer, <!1><A HREF="EST_Hash_Pair.html">EST_Hash_Pair</A><K, V> ><BR> class <!1><A HREF="EST_TIterator.html">EST_TIterator</A>< <!1><A HREF="EST_THash.html">EST_THash</A><K, V>, IPointer, <!1><A HREF="EST_Hash_Pair.html">EST_Hash_Pair</A><K, V> ><BR> class EST_TRwIterator< <!1><A HREF="EST_THash.html">EST_THash</A><K, V>, IPointer, <!1><A HREF="EST_Hash_Pair.html">EST_Hash_Pair</A><K, V> ><BR><DD></DL><P><DL> <A NAME="IPointer_s"></A> <A NAME="DOC.91.3.20.1"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>struct IPointer_s</B></TT> <DD>A position in the table is given by a bucket number and a pointer into the bucket <DL><DT><DD></DL><P> <A NAME="skip_blank"></A> <A NAME="DOC.91.3.20.2"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void skip_blank(IPointer &ip) const </B></TT> <DD>Shift to point at something <DL><DT><DD></DL><P> <A NAME="point_to_first"></A> <A NAME="DOC.91.3.20.3"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void point_to_first(IPointer &ip) const </B></TT> <DD>Go to start of the table <DL><DT><DD></DL><P> <A NAME="move_pointer_forwards"></A> <A NAME="DOC.91.3.20.4"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void move_pointer_forwards(IPointer &ip) const </B></TT> <DD>Move pointer forwards, at the end of the bucket, move down <DL><DT><DD></DL><P> <A NAME="points_to_something"></A> <A NAME="DOC.91.3.20.5"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>bool points_to_something(const IPointer &ip) const </B></TT> <DD>We are at the end if the pointer ever becomes NULL <DL><DT><DD></DL><P> <A NAME="points_at"></A> <A NAME="DOC.91.3.20.6"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_Hash_Pair.html">EST_Hash_Pair</A><K, V> & points_at(const IPointer &ip)</B></TT> <DD>Return the contents of this entry <DL><DT><DD></DL><P> <A NAME="Entry"></A> <A NAME="DOC.91.3.20.7"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>typedef <!1><A HREF="EST_Hash_Pair.html">EST_Hash_Pair</A><K, V> Entry</B></TT> <DD>An entry returned by the iterator is a key value pair <DL><DT><DD></DL><P> <A NAME="Entries"></A> <A NAME="DOC.91.3.20.8"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>typedef EST_TStructIterator< <!1><A HREF="EST_THash.html">EST_THash</A><K, V>, IPointer, <!1><A HREF="EST_Hash_Pair.html">EST_Hash_Pair</A><K, V> > Entries</B></TT> <DD>Give the iterator a sensible name <DL><DT><DD></DL><P></DL> <A NAME="Key Iteration"></A> <A NAME="DOC.91.3.21"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Key Iteration</B></TT> <DD> This iterator steps through the table returning just keys. <DL><DT><DT><B>Friends:</B><DD> class <!1><A HREF="EST_TIterator.html">EST_TIterator</A>< <!1><A HREF="EST_THash.html">EST_THash</A><K, V>, IPointer_k, K ><BR> class EST_TRwIterator< <!1><A HREF="EST_THash.html">EST_THash</A><K, V>, IPointer_k, K ><BR><DD></DL><P><DL> <A NAME="IPointer_k_s"></A> <A NAME="DOC.91.3.21.1"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>struct IPointer_k_s</B></TT> <DD>A position in the table is given by a bucket number and a pointer into the bucket <DL><DT><DD></DL><P> <A NAME="skip_blank"></A> <A NAME="DOC.91.3.21.2"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void skip_blank(IPointer_k &ip) const </B></TT> <DD>Shift to point at something <DL><DT><DD></DL><P> <A NAME="point_to_first"></A> <A NAME="DOC.91.3.21.3"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void point_to_first(IPointer_k &ip) const </B></TT> <DD>Go to start of the table <DL><DT><DD></DL><P> <A NAME="move_pointer_forwards"></A> <A NAME="DOC.91.3.21.4"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void move_pointer_forwards(IPointer_k &ip) const </B></TT> <DD>Move pointer forwards, at the end of the bucket, move down <DL><DT><DD></DL><P> <A NAME="points_to_something"></A> <A NAME="DOC.91.3.21.5"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>bool points_to_something(const IPointer_k &ip) const </B></TT> <DD>We are at the end if the pointer ever becomes NULL <DL><DT><DD></DL><P> <A NAME="points_at"></A> <A NAME="DOC.91.3.21.6"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>K& points_at(const IPointer_k &ip)</B></TT> <DD>Return the key of this entry <DL><DT><DD></DL><P> <A NAME="KeyEntry"></A> <A NAME="DOC.91.3.21.7"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>typedef K KeyEntry</B></TT> <DD>An entry returned by this iterator is just a key <DL><DT><DD></DL><P> <A NAME="KeyEntries"></A> <A NAME="DOC.91.3.21.8"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>typedef <!1><A HREF="EST_TIterator.html">EST_TIterator</A>< <!1><A HREF="EST_THash.html">EST_THash</A><K, V>, IPointer_k, K > KeyEntries</B></TT> <DD>Give the iterator a sensible name <DL><DT><DD></DL><P></DL> </DL> <HR> <DL><DT><B>Direct child classes: </B><DD><A HREF="EST_TStringHash.html">EST_TStringHash</A><BR> </DL> <DL><DT><DD></DL><P><P><I><A HREF="index.html">Alphabetic index</A></I> <I><A HREF="HIER.html">HTML hierarchy of classes</A> or <A HREF="HIERjava.html">Java</A></I></P><HR> <A HREF = "http://www.ed.ac.uk/"> <IMG align=right BORDER=0 SRC = "edcrest.gif"></A> <P Align=left><I>This page is part of the <A HREF="http://www.cstr.ed.ac.uk/projects/speech_tools.html"> Edinburgh Speech Tools Library</A> documentation <br> Copyright <A HREF="http://www.ed.ac.uk"> University of Edinburgh</A> 1997 <br> Contact: <A HREF="mailto:speech_toolss@cstr.ed.ac.uk"> speech_tools@cstr.ed.ac.uk </a> </P> <br clear=right>