是否有任何理由让我更喜欢Rcpp::NumericVector
而非std::vector<double>
?
例如,下面这两个函数。
// [[Rcpp::export]]
Rcpp::NumericVector foo(const Rcpp::NumericVector& x) {
Rcpp::NumericVector tmp(x.length());
for (int i = 0; i < x.length(); i++)
tmp[i] = x[i] + 1.0;
return tmp;
}
// [[Rcpp::export]]
std::vector<double> bar(const std::vector<double>& x) {
std::vector<double> tmp(x.size());
for (int i = 0; i < x.size(); i++)
tmp[i] = x[i] + 1.0;
return tmp;
}
在考虑它们的工作和基准表现时是等效的。我知道Rcpp提供了糖和向量化操作,但如果只是关于将R的向量作为输入并返回向量作为输出,那么使用它们中的哪一个会有任何区别吗?使用std::vector<double>
在与R交互时会导致任何可能的问题吗?