2017-01-17 261 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「)' –