It sounds he wants the STL-like "set" container. Valeri > -----Original Message----- > From: owner-roottalk@pcroot.cern.ch [mailto:owner-roottalk@pcroot.cern.ch] > On Behalf Of Rene Brun > Sent: Thursday, June 05, 2003 3:31 PM > To: Jean-Eric Campagne > Cc: Fons Rademakers; roottalk@pcroot.cern.ch > Subject: Re: [ROOT] TList Unique entry > > Hi Jean-Eric, > > I have some difficulty understanding what you want to do, > but your solution will be VERY VERY innefficient. > You should simply do: > if (!list->FindObject(obj)) list->Add(obj); > > Rene Brun > > On Thu, 5 Jun > 2003, Jean-Eric Campagne wrote: > > > Hi Fons, > > > > What do you think of the following routine... > > > > Chers. Jean-Eric > > > > //---------------------------------------------------------------------- > --- > > ---/ > > #include <set> > > typedef std::set<void*> AddressBook; > > > > > > void SecureDelete(TList* aList) { > > AddressBook uniqueInstanceSet; //Address Container with unique > instance > > pair<AddressBook::iterator,bool> rc; > > > > TIter next(aList); > > TObject* aObj; > > //referencer les addresses dans un set (une entree par adresse > differente) > > while ( (aObj = next()) ) { > > rc = uniqueInstanceSet.insert((void*)aObj); > > if (rc.second) {// the objet has not been referenced so it can be > > deleted > > delete aObj; > > } > > }//eow > > //Use Clear with nodelete option to reset the List wo deletion of the > > objects > > //as they have been deleted in previous while loop. > > aList->Clear("nodelete"); > > } > > > > --On mercredi 4 juin 2003 21:33 +0200 Fons Rademakers > > <Fons.Rademakers@cern.ch> wrote: > > > > > Hi Jean-Eric, > > > > > > this cannot be done automatically, you have to make some add method > > > that first looks if the object is already in the list (like > > > list->FindObject(newObj)) and only add the method if FindObject() > > > returns 0. > > > > > > Cheers, Fons. > > > > > > > > > On Wed, 2003-06-04 at 16:05, Jean-Eric Campagne wrote: > > >> Hello, > > >> > > >> If I make add twice the same instance of an object in a TList, then > at > > >> the Delete phase of the TList there is a crash for known reason. > > >> How, I can ask the TList to keep Unique Instance of an Object? > > >> > > >> Regards > > >> Jean-Eric Campagne > > >> > > >> > ........................................................................ > > >> ... .LAL - IN2P3 - CNRS > > >> .LAL - B.P 34 - 91898 Orsay Cedex - France > > >> .Piece 108 > > >> .Tel +33 (0)1 64 46 84 29 > > >> .Fax +33 (0)1 64 46 83 97 > > >> > ........................................................................ > > >> ... > > > -- > > > Org: CERN, European Laboratory for Particle Physics. > > > Mail: 1211 Geneve 23, Switzerland > > > E-Mail: Fons.Rademakers@cern.ch Phone: +41 22 7679248 > > > WWW: http://root.cern.ch/~rdm/ Fax: +41 22 7679480 > > > > > > > > > > > > ........................................................................ .. > . > > .LAL - IN2P3 - CNRS > > .LAL - B.P 34 - 91898 Orsay Cedex - France > > .Piece 108 > > .Tel +33 (0)1 64 46 84 29 > > .Fax +33 (0)1 64 46 83 97 > > > ........................................................................ .. > . > > > >
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:12 MET