X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/cc81d32f2bf8c159f3b1bf6ddaf62e6d77720209..1c0f361be288df133c766e04cc857b3e4682b31a:/docs/latex/wx/hashmap.tex diff --git a/docs/latex/wx/hashmap.tex b/docs/latex/wx/hashmap.tex index 1a48cf60b3..8177e74c82 100644 --- a/docs/latex/wx/hashmap.tex +++ b/docs/latex/wx/hashmap.tex @@ -1,7 +1,9 @@ \section{\class{wxHashMap}}\label{wxhashmap} This is a simple, type-safe, and reasonably efficient hash map class, -whose interface is a subset of the interface of STL containers. +whose interface is a subset of the interface of STL containers. In +particular, the interface is modelled after std::map, and the various, +non standard, std::hash\_map. \wxheading{Example} @@ -27,7 +29,7 @@ whose interface is a subset of the interface of STL containers. h2["Bill"] = "ABC"; wxString tmp = h2["Bill"]; // since element with key "Joe" is not present, this will return - // the default value, that is an empty string in the case of wxString + // the default value, which is an empty string in the case of wxString MyClass tmp2 = h2["Joe"]; // iterate over all the elements in the class @@ -66,7 +68,7 @@ and VALUE\_T values. \end{verbatim} The HASH\_T and KEY\_EQ\_T are the types -used for the hashing function and key comparison. wxWindows provides +used for the hashing function and key comparison. wxWidgets provides three predefined hashing functions: {\tt wxIntegerHash} for integer types ( {\tt int}, {\tt long}, {\tt short}, and their unsigned counterparts ), {\tt wxStringHash} for strings @@ -84,6 +86,38 @@ to {\tt wxString} like this: wxIntegerHash, wxIntegerEqual, MyHash ); + + // using an user-defined class for keys + class MyKey { /* ... */ }; + + // hashing function + class MyKeyHash + { + public: + MyKeyHash() { } + + unsigned long operator()( const MyKey& k ) const + { /* compute the hash */ } + + MyKeyHash& operator=(const MyKeyHash&) { return *this; } + }; + + // comparison operator + class MyKeyEqual + { + public: + MyKeyEqual() { } + bool operator()( const MyKey& a, const MyKey& b ) const + { /* compare for equality */ } + + MyKeyEqual& operator=(const MyKeyEqual&) { return *this; } + }; + + WX_DECLARE_HASH_MAP( MyKey, // type of the keys + SOME_TYPE, // any type you like + MyKeyHash, // hasher + MyKeyEqual, // key equality predicate + CLASSNAME); // name of the class \end{verbatim} \latexignore{\rtfignore{\wxheading{Types}}}