2017-01-17 1 views
0

Когда я скомпилировать код ниже в Rcpp, я получаю следующее сообщение об ошибке в файле с именем stl_algobase.h:Ошибка компиляции в rcpp

`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/бен; С: /RBuildTools/gcc-4.6.3/bin ")' –

 Смежные вопросы

  • Нет связанных вопросов^_^