rcpp 中的编译错误

Compile error in rcpp

本文关键字:错误 编译 rcpp      更新时间:2023-10-16

当我在 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; 
  }

感谢您的帮助

当你调用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())) {