[Rcpp-devel] Possible inconsistency in Rcpp vs stl in erase(iterator, iterator)

Romain Francois romain at r-enthusiasts.com
Wed Jun 5 16:32:34 CEST 2013


This is now fixed in rev 4330.

I'm looking at the other issue you reported.

Le 05/06/13 14:50, Romain Francois a écrit :
> Thanks. I'll have a look.
>
> Le 05/06/13 14:09, Toni Giorgino a écrit :
>> Dears,
>>
>> I am a newbie to Rcpp.  I may have found an off-by-one inconsistency in
>> the handling of  List::erase(iter1,iter2) operation with respect to its
>> homologous in the STL (which I suppose is intended to mimic).  In STL,
>> iter2 can be the container's .end(); in Rcpp, the same gives an out of
>> boundary error. (See below)
>>
>> Thanks for the incredible package. Best
>>
>> Test case...
>>
>> #include <Rcpp.h>
>> #include <iostream>
>>
>> // [[Rcpp::export]]
>> SEXP truncateTest() {
>> BEGIN_RCPP
>>
>>    using namespace std;
>>    Rcpp::List l;
>>    std::vector<int> v;
>>
>>    for (int i=1; i<=10; i++) {
>>      v.push_back(i);
>>      l.push_back(i);
>>    }
>>
>>    v.erase(v.begin()+5,v.end()-1);
>>    l.erase(l.begin()+5,l.end()-1); // ?
>>
>>    cout << "std::vector left with " << v.size() << endl;
>>    cout << "Rcpp::List  left with " << l.size() << endl;
>>
>> END_RCPP
>> }
>>
>> /*** R
>> #  library(Rcpp)
>> #  sourceCpp("truncateTest.cpp")
>> #  truncateTest()
>> #  #prints 6 and 5
>> */




-- 
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30

R Graph Gallery: http://gallery.r-enthusiasts.com

blog:            http://blog.r-enthusiasts.com
|- http://bit.ly/Zs97qg  : highlight 0.4.1
`- http://bit.ly/10X94UM : Mobile version of the graph gallery



More information about the Rcpp-devel mailing list