Le 16/03/10 01:33, Douglas Bates a écrit : > > I have been using the begin method to obtain a pointer to the contents > of an Rcpp::Vector object. For example > > Rcpp::NumericVector foo(10); > double *ptr = foo.begin(); > > Would a preferred idiom be > > double *ptr =&foo[0]: > > In C I would use the REAL function to obtain a pointer to the contents > of the R object.
Those three options are identical, although we cache the pointer so that we don't have to call REAL each time, as we found this can be expensive. I prefer begin, at least for readability (I have never really been comfortable with the &). You often see people using &v[0] with std::vector because in that case those are not identical, for example the gcc implementation of vector::iterator is not a raw pointer so vector::begin() does not return a pointer, but &x[0] does. Also, for not simple vectors (character, generic, expression), you really have to go through with iterators because we cannot use pointers here (write barrier). Romain -- Romain Francois Professional R Enthusiast +33(0) 6 28 91 30 30 http://romainfrancois.blog.free.fr |- http://tr.im/OIXN : raster images and RImageJ |- http://tr.im/OcQe : Rcpp 0.7.7 `- http://tr.im/O1wO : highlight 0.1-5 _______________________________________________ Rcpp-devel mailing list [email protected] https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
