Michael Wiesmann <wiesmann@e18.physik.tu-muenchen.de> writes: > At the moment I want to draw some TGraphErrors and read the data from > file, number of points not necessarily known. Using a stl vector<> > would be very convenient, but TGraph prefers to have double* or float* > ... Is there any elegant OO way to cope with this problem? STL vector<> can be used in compiled code. (I've been using it with ROOT on Linux for a long time and haven't seen any problems). I'm not an expert in C++ so I'll cite "The C++ Standard Library" book (1999): : The C++ standard library does not state clearly whether the elements : of a vector are required to be in contiguous memory. However, it is : the intention that this is guaranteed and it will be fixed due to a : defect report. So the following code should be OK: $ cat gr.C #include <vector> #include "TGraph.h" void gr(); void gr() { std::vector<Double_t> x; std::vector<Double_t> y; Int_t dim = 32; for (Int_t i = 0; i < dim; i++) { x.push_back(i); y.push_back(i*i); } TGraph *g = new TGraph(dim, &x[0], &y[0]); g->Draw("AL"); } root [0] .X gr.C++ Creating shared library /home/malusek/test/vec/./gr_C.so <TCanvas::MakeDefCanvas>: created default TCanvas with name c1 root [1] The graph is plotted OK. $ g++ --version 2.95.3 -- Alexandr.Malusek@imv.liu.se
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:37 MET