Re: [ROOT] push_back giving me problems

From: Fons Rademakers (Fons.Rademakers@cern.ch)
Date: Wed Jan 16 2002 - 16:18:20 MET


Hi David,

   does it work if you do:

vector<TString> hts;

    TString nname(mr->GetName())
    hts.push_back(nname);

Cheers, Fons.



David R. Relyea wrote:

> Push_back from stl::vector is giving me problems.  If I run this code:
> 
> #include <vector>
> (many other includes)
> 
> void something() {
> 
>   mfile = TMapFile::Create("e.map");
> 
>   // Get all data entries in file
> 
>   TMapRec *mr = mfile->GetFirst();
> 
>   vector< TString* > hts;
> 
>   while (mfile->OrgAddress(mr)) {
>     TString boo = mr->GetClassName();
>     if(boo.Contains("TH1F")) {
>       TString* nname=new TString(mr->GetName());
>       hts.push_back(nname);
>       cout << boo << "\t" << nname->Data() << endl;
>     }
>     mr   = mr->GetNext();
>   }
> }
> 
> If I comment out the line
> 
>       hts.push_back(nname);
> 
> , this runs perfectly well (in CINT) over my entire TMapfile.  However, if
> I uncomment that line (as shown) and run this in CINT, it seg faults after
> two iterations of the while loop, specifically on the
> 
> TString boo = mr->GetClassName()
> 
> .  Is this a problem CINT has with vectors (which I doubt), or does this
> have something to do with how TMapFile handles pointers?  Any advice would
> be appreciated.  Thanks.
> 
> David Relyea
> 
> 


-- 
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



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:38 MET