library: libCore #include "THashList.h" |
THashList
class description - header file - source file - inheritance tree (.pdf)
protected:
THashList(const THashList& hl)
THashList& operator=(const THashList& hl)
public:
THashList(Int_t capacity = TCollection::kInitHashTableCapacity, Int_t rehash = 0)
THashList(TObject* parent, Int_t capacity = TCollection::kInitHashTableCapacity, Int_t rehash = 0)
virtual ~THashList()
virtual void AddAfter(const TObject* after, TObject* obj)
virtual void AddAfter(TObjLink* after, TObject* obj)
virtual void AddAt(TObject* obj, Int_t idx)
virtual void AddBefore(const TObject* before, TObject* obj)
virtual void AddBefore(TObjLink* before, TObject* obj)
virtual void AddFirst(TObject* obj)
virtual void AddFirst(TObject* obj, Option_t* opt)
virtual void AddLast(TObject* obj)
virtual void AddLast(TObject* obj, Option_t* opt)
Float_t AverageCollisions() const
static TClass* Class()
virtual void Clear(Option_t* option = "")
virtual void Delete(Option_t* option = "")
virtual TObject* FindObject(const char* name) const
virtual TObject* FindObject(const TObject* obj) const
virtual TClass* IsA() const
virtual void RecursiveRemove(TObject* obj)
void Rehash(Int_t newCapacity)
virtual TObject* Remove(TObject* obj)
virtual TObject* Remove(TObjLink* lnk)
virtual void ShowMembers(TMemberInspector& insp, char* parent)
virtual void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
protected:
THashTable* fTable Hashtable used for quick lookup of objects
THashList
THashList implements a hybrid collection class consisting of a
hash table and a list to store TObject's. The hash table is used for
quick access and lookup of objects while the list allows the objects
to be ordered. The hash value is calculated using the value returned
by the TObject's Hash() function. Each class inheriting from TObject
can override Hash() as it sees fit.
THashList(Int_t capacity, Int_t rehash)
Create a THashList object. Capacity is the initial hashtable capacity
(i.e. number of slots), by default kInitHashTableCapacity = 17, and
rehash is the value at which a rehash will be triggered. I.e. when the
average size of the linked lists at a slot becomes longer than rehash
then the hashtable will be resized and refilled to reduce the collision
rate to about 1. The higher the collision rate, i.e. the longer the
linked lists, the longer lookup will take. If rehash=0 the table will
NOT automatically be rehashed. Use Rehash() for manual rehashing.
WARNING !!!
If the name of an object in the HashList is modified, The hashlist
must be Rehashed
void AddFirst(TObject *obj, Option_t *opt)
Add object at the beginning of the list and also store option.
Storing an option is useful when one wants to change the behaviour
of an object a little without having to create a complete new
copy of the object. This feature is used, for example, by the Draw()
method. It allows the same object to be drawn in different ways.
void AddLast(TObject *obj, Option_t *opt)
Add object at the end of the list and also store option.
Storing an option is useful when one wants to change the behaviour
of an object a little without having to create a complete new
copy of the object. This feature is used, for example, by the Draw()
method. It allows the same object to be drawn in different ways.
void AddBefore(TObjLink *before, TObject *obj)
Insert object before object before in the list.
void AddAfter(TObjLink *after, TObject *obj)
Insert object after object after in the list.
Float_t AverageCollisions()
Return the average collision rate. The higher the number the longer
the linked lists in the hashtable, the slower the lookup. If the number
is high, or lookup noticeably too slow, perfrom a Rehash().
void Rehash(Int_t newCapacity)
Rehash the hashlist. If the collision rate becomes too high (i.e.
the average size of the linked lists become too long) then lookup
efficiency decreases since relatively long lists have to be searched
every time. To improve performance rehash the hashtable. This resizes
the table to newCapacity slots and refills the table. Use
AverageCollisions() to check if you need to rehash.
Author: Fons Rademakers 10/08/95
Last update: root/cont:$Name: $:$Id: THashList.cxx,v 1.7 2004/11/12 21:51:18 brun Exp $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
ROOT page - Class index - Class Hierarchy - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.