2017-01-17 119 views
0

当我在RCPP编译下面的代码,我得到的文件中出现以下错误命名stl_algobase.h:编译错误

`no type named 'value_type' in 'struct std::iterator_traits<Rcpp::Vector<14, Rcpp::PreserveStorage> >'` 

我使用的是标准的类型声明,所以我不清楚的地方值类型不正确。

下面的代码:

#include <Rcpp.h> 
using namespace Rcpp; 

// [[Rcpp::plugins(cpp11)]] 
#include <cstddef> // std:size_t 
#include <iterator> // std:begin, std::end 
#include <vector> // std::vector 
#include <iostream> 
#include <string> 

// [[Rcpp::export]] 
    bool dupCheckRcpp (const Rcpp::NumericVector vec, const Rcpp::NumericMatrix allMatrix) { 
    int i, nrow, ncol; 
    bool flag; 
    nrow = allMatrix.nrow(); ncol = allMatrix.ncol(); 
    Rcpp::NumericVector vecTmp(ncol); 

    flag = false; 
    for (i = 0; i < nrow; ++i) { 
     // copy to vector 
     vecTmp = allMatrix[i]; 
     // compare 
     if (std::equal(vec.begin(),vec.end(),vecTmp)) { 
      flag = true; 
      return flag; 
      } 
    } 
    return flag; 
    } 

感谢您的帮助

回答

2

当你调用std::equal你需要传递迭代器,而不是整个容器。 http://en.cppreference.com/w/cpp/algorithm/equal

变化

if (std::equal(vec.begin(),vec.end(),vecTmp)) { 

if (std::equal(vec.begin(),vec.end(),vecTmp.begin())) { 
+0

这帮助,但我也有通过执行下述R代码来解决环境变量: 'Sys.setenv(PATH =“% PATH%; C:/ RBuildTools/bin中; C:/RBuildTools/gcc-4.6.3/bin“)' –