Hi. I am still confused by the implementation of STL in ROOT. For example the following code with vectors works fine: #include<vector> int vec() { vector< double > vec; vector< double >::iterator vit; vec.push_back(5.0); vit=vec.begin(); cout << *vit << endl; return 0; } But to do the same thing with map I have to go through this business of precompiling my own library. Furthermore I can't figure out how to get map iterators to work properly. I tried the following: #include<map> int map { map< long, double, less< long > > m; map< long, double, less< long > >::iterator mit; m[3]=4.5; mit=m.begin(); cout << mit->first << endl; return 0; } but got the error: Error: Symbol mit is not defined in current scope FILE:test.C LINE:17 Error: Failed to evaluate mit->first(class G__CINT_ENDL)143141208 *** Interpreter error recovered *** I tried including the line #pragma link C++ class map<long,double,less<long> >::iterator; in the MapLoader.C file and recompiled the library but that didn't work either. Thank you again for your help. Matthew Wood On Tue, 29 Jul 2003, Philippe Canal wrote: > Hi Matthew, > > You should compile you map (rather than trying to use the interpreted > version). > The message means that there are already some map instance that has been > compiled. > > Do: > // MapLoader.C > #include <map> > #pragma link C++ class map<long,double,less<long> >; > // End of MapLoader.C > > root [] .L MapLoader.C+ > > Cheers, > Philippe. > > -----Original Message----- > From: owner-roottalk@pcroot.cern.ch > [mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Matthew Wood > Sent: Tuesday, July 29, 2003 8:16 AM > To: roottalk@pcroot.cern.ch > Subject: [ROOT] Problem with stl map > > > Hi. I am having trouble using the STL map class and I was hoping someone > could give me an example that works. I tried the same code in a C++ > program and it worked fine. Here is what I am trying ( I am using ROOT > 3.05/05 ): > > root [0] #include <map> > root [1]test; > Limitation: Can't instantiate precompiled template > map<long,double,less<long> > FILE:(tmpfile) LINE:1 > *** Interpreter error recovered *** > > Thank you for your help. > > Matthew Wood >
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:14 MET