[Rcpp-devel] Use size_t rather than int for vector sizes and indexing?

chuck at chuckcode.com chuck at chuckcode.com
Wed Apr 13 20:05:14 CEST 2011


Hi All,

Thanks to Dirk Eddelbuettel and the other contributors for such a
wonderful package. Rcpp really transforms the way that I've been able to
incorporate c++ code into R. Makes it possible to speed up the critical
computations while keeping all the great flexibility and features of R.

I've run into a problem lately with particularly large vectors in Rcpp. I
seem to be overflowing when my vectors get larger than 2^31 elements on a
64 bit system. It looks from the code of both the classic (included below)
and the newer versions as though this is due to using ints rather than
something like size_t (http://en.wikipedia.org/wiki/Size_t) as the type for
size and indexing into the vector. It looks like RcppResultsSet's add()
functions may also be using ints.

Curious to know if there is a particular reason for using ints rather than
something like size_t and if the project managers would be open to changing
to accomodate larger vectors.

Thanks,
-Chuck Sugnet

template <typename T>
class RcppVector {
public:
	typedef T* iterator ;
	typedef const T* const_iterator ;
	
    RcppVector(SEXP vec);
    RcppVector(int len);
    int size() const;
    T& operator()(int i) const; 
    T *cVector() const;
    std::vector<T> stlVector() const;
    
    inline const_iterator begin() const { return v ; }
    inline const_iterator end() const { return v + len ; }
    
    inline iterator begin(){ return v ; }
    inline iterator end(){ return v + len ; }
    
private:
    int len;
    T *v;
};


More information about the Rcpp-devel mailing list