[Rcpp-devel] Convertion from SEXP to std::vector<unsigned>
Douglas Bates
bates at stat.wisc.edu
Wed Aug 22 18:53:37 CEST 2012
On Wed, Aug 22, 2012 at 9:55 AM, Peng Yu <pengyu.ut at gmail.com> wrote:
> Hi,
>
> Rcpp::IntegerVector can not be converted to std::vector<unsigned>. Is
> there a class that can help convert SEXP to std::vector<unsigned>?
>
> The current walkaround can be something like the following. I'm
> wondering if there is a better solution?
>
> Rcpp::IntegerVector vec(vx);
> std::vector<unsigned> v;
You should at least specify the size there so that push_back doesn't
need to allocate/reallocate and possibly overallocate.
std::vector<unsigned> v(vec.size());
You may be able to allocate from iterators as in
std::vector<unsigned> v(vec.begin(), vec.end());
but I'm not sure if that will do the automatic conversion from signed
int to unsigned. Look up the different forms of constructors for
std::vector and the STL algorithms such as std::transform.
> for (int i=0; i<vec.size(); i++) {
> v.push_back(vec[i]);
> }
>
> --
> Regards,
> Peng
> _______________________________________________
> Rcpp-devel mailing list
> Rcpp-devel at lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
More information about the Rcpp-devel
mailing list