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