Tools.h++ Class Reference
Table Of Contents
- Tools.h++ 7.0 Class Reference
- Intoduction
- Class Hierarchy
- RWAuditStreamBuffer
- RWBag
- RWBagIterator
- RWBench
- RWBinaryTree
- RWBinaryTreeIterator
- RWbistream
- RWBitVec
- RWbostream
- RWBTree
- RWBTreeDictionary
- RWBTreeOnDisk
- RWBufferedPageHeap
- RWCacheManager
- RWCLIPstreambuf
- RWCollectable
- RWCollectableAssociation
- RWCollectableDate
- RWCollectableInt
- RWCollectableString
- RWCollectableTime
- RWCollection
- RWCRegexp
- RWCRExpr
- RWCString
- RWCSubString
- RWCTokenizer
- RWDate
- RWDDEstreambuf
- RWDiskPageHeap
- RWDlistCollectables
- RWDlistCollectablesIterator
- RWeistream
- RWeostream
- RWFactory
- RWFile
- RWFileManager
- RWGBitVec(size)
- RWGDlist(type)
- RWGDlistIterator(type)
- RWGOrderedVector(val)
- RWGQueue(type)
- RWGSlist(type)
- RWGSlistIterator(type)
- RWGSortedVector(val)
- RWGStack(type)
- RWGVector(val)
- RWHashDictionary
- RWHashDictionaryIterator
- rw_hashmap
- rw_hashmultimap
- rw_hashmultiset
- rw_hashset
- RWHashTable
- RWHashTableIterator
- RWIdentityDictionary
- RWIdentitySet
- RWInteger
- RWIterator
- RWLocale
- RWLocaleSnapshot
- RWModel
- RWModelClient
- RWOrdered
- RWOrderedIterator
- RWpistream
- RWpostream
- RWSequenceable
- RWSet
- RWSetIterator
- rw_slist
- RWSlistCollectables
- RWSlistCollectablesIterator
- RWSlistCollectablesQueue
- RWSlistCollectablesStack
- RWSortedVector
- RWTBitVec
- RWTime
- RWTimer
- RWTIsvDlist
- RWTIsvDlistIterator
- RWTIsvSlist
- RWTIsvSlistIterator
- RWTPtrDeque
- RWTPtrDlist
- RWTPtrDlistIterator
- RWTPtrHashDictionary
- RWTPtrHashDictionaryIterator
- RWTPtrHashMap
- RWTPtrHashMapIterator
- RWTPtrHashMultiMap
- RWTPtrHashMultiMapIterator
- RWTPtrHashSet
- RWTPtrHashMultiSetIterator
- RWTPtrHashSetIterator
- RWTPtrHashTable
- RWTPtrHashTableIterator
- RWTPtrMap
- RWTPtrMapIterator
- RWTPtrMultiMap
- RWTPtrMultiMapIterator
- RWTPtrMultiSet
- RWTPtrMultiSetIterator
- RWTPtrOrderedVector
- RWTPtrSet
- RWTPtrSetIterator
- RWTPtrSlist
- RWTPtrSlistIterator
- RWTPtrSortedDlist
- RWTPtrSortedDlistIterator
- RWTPtrSortedVector
- RWTPtrVector
- RWTQueue
- RWTStack
- RWTValDeque
- RWTValDlist
- RWTValDlistIterator
- RWTValHashDictionary
- RWTValHashDictionaryIterator
- RWTValHashMap
- RWTValHashMapIterator
- RWTValHashMultiMap
- RWTValHashMultiMapIterator
- RWTValHashMultiSet
- RWTValHashMultiSetIterator
- RWTValHashSet
- RWTValHashSetIterator
- RWTValHashTable
- RWTValHashTableIterator
- RWTValMap
- RWTValMapIterator
- RWTValMultiMap
- RWTValMultiMapIterator
- RWTValMultiSet
- RWTValMultiSetIterator
- RWTValOrderedVector
- RWTValSet
- RWTValSetIterator
- RWTValSlist
- RWTValSlistIterator
- RWTValSortedDlist
- RWTValSortedDlistIterator
- RWTValSortedVector
- RWTValVector
- RWTValVirtualArray
- RWVirtualPageHeap
- RWvios
- RWvistream
- RWvostream
- RWWString
- RWWSubString
- RWWTokenizer
- RWXDRistream (Unix only)
- RWXDRostream (Unix only)
- RWZone
- RWZoneSimple
- Tools.h++ 7.0 Class Reference Appendix
- RWTPtrDlist
- RWTPtrDlistIterator
- RWTPtrHashDictionary
- RWTPtrHashDictionaryIterator
- RWTPtrHashSet
- RWTPtrHashTable
- RWTPtrHashTableIterator
- RWTPtrOrderedVector
- RWTPtrSlist
- RWTPtrSlistIterator
- RWTPtrSortedVector
- RWTValDlist
- RWTValDlistIterator
- RWTValHashDictionary
- RWTValHashDictionaryIterator
- RWTValHashSet
- RWTValHashTable
- RWTValHashTableIterator
- RWTValOrderedVector
- RWTValSlist
- RWTValSlistIterator
- RWTValSortedVector
- RWTPtrDlist
- Rogue Wave Licensing Statement

well-defined assignment semantics (T::operator=(const T&) or equivalent).●
In addition, class K must have
well-defined equality semantics (K::operator==(const K&)).●
A user-supplied hashing function for type K must be supplied to the constructor when creating a new table. If
K is a Rogue Wave class, then this requirement is usually trivial because most Rogue Wave objects know
how to return a hashing value. In fact, classes RWCString, RWDate, RWTime, and RWWString contain static
member functions called hash that can be supplied to the constructor as is. The function must have prototype:
unsigned hFun(const K& a);
and should return a suitable hash value for the object a.
To find a value, the key is first hashed to determine in which bucket the key and value can be found. The
bucket is then searched for an object that is equal (as determined by the equality operator) to the key.
The initial number of buckets in the table is set by the constructor. There is a default value. If the number of
(key/value) pairs in the collection greatly exceeds the number of buckets then efficiency will sag because
each bucket must be searched linearly. The number of buckets can be changed by calling member function
resize(). This is an expensive proposition because not only must all the items be copied into the new buckets,
but all of the keys must be rehashed.
If you wish this to be done automatically, then you can subclass from this class and implement your own
special insert() and remove() functions which perform a resize() as necessary.
Persistence
None
Example
#include <rw/tvhdict.h>
#include <rw/cstring.h>
#include <rw/rwdate.h>
#include <rw/rstream.h>
main() {
RWTValHashDictionary<RWCString, RWDate> birthdays(RWCString::hash);
birthdays.insertKeyAndValue(
"John",
RWDate(12, "April", 1975)
);
birthdays.insertKeyAndValue("Ivan", RWDate(2, "Nov", 1980));
// Alternative syntax:
birthdays["Susan"] = RWDate(30, "June", 1955);
birthdays["Gene"] = RWDate(5, "Jan", 1981);
// Print a birthday:
cout << birthdays["John"] << endl;