Re: [ROOT] Using stl map

From: Colin Bernet (bernet@hep.saclay.cea.fr)
Date: Fri Dec 14 2001 - 11:40:04 MET


Hi Antonio, 

I had the same problem a few days ago : 

- Masa's solution is :

Hello Colin,

I am happy to answer your question.

For using STL container classes, you need to precompile them.
In this case, you need to create following header file.

   // mystl.h
   #include <map>
   #include <vector>
   #ifdef __MAKECINT__
   #pragma link C++ class map<int, const char*>;
   #pragma link C++ class vector< const char* >;
   #endif

And use makecint.

   $ makecint -mk makefile -dl mystl.dll -H mystl
   $ make -f makefile

Then, created mystl.dll includes definition of map<int, const char*>
and vector<const char*>.  Load thiss DLL or shared library when run
that program.


Thank you
Masaharu Goto

- And Here is Rene's advice :

Compile your class with aclic : instead of doing .L myclass.C, do .L
myclass.C++. This will generate a shared library and load it in root. Note
that you have to use the ClassDef and ClassImp macros for my_class, so it
can be used interactively (see the root user guide for more info, there
is a chapter about aclic).
 
cheers, 
Colin


cbernet@cea.fr

> Dear rooters,
> I am trying to use a stl map into a myclass.C that I load with .L
> Although I am including map.h it seems that as soon as I use the
> my_class::Loop() function, the map symbol is not recognized and I got the
> following error:
> 
> Error: Symbol map is not defined in current scope  FILE:my_class.C LINE:51
> 
> What should I add to my .C?
> Also another question, should I use map<float,float> or
> map<Float_t, Float_t>?
> Thanks a lot,
> Antonio
> 
> P.S. I'm using root 3.02/01
> 
> 
> //----------- myclass.C
> #include <TROOT.h>
> #include <TChain.h>
> #include <TFile.h>
> #include <map.h>
> class my_class {
>    public:
>    void Loop();
>   ...
>  private:
>  ...
> }
> void my_class::Loop(){
>  ....
>   map<float, float> pippo;
>  ...
> }
> 
> _______________________________________________________________________________
> 	     a n t o n i o   	      s i d o t i
> 
> 	     e-mail	              sidoti@science.unitn.it
> 	                              sidoti@fnal.gov
> 	     www   		      http://higgs.tn.infn.it/~sidoti/
> _______________________________________________________________________________
> 		"Il meglio e` nemico del buono"
> 
> 



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:51:11 MET