我在
我在Makevars文件中指定了以下设置:
C++
中实现了一个算法,输出一个包含大量元素的数组。现在,我想在Rcpp
中实现一个包装器,以便可以通过使用R
来调用此函数。我在Makevars文件中指定了以下设置:
这样我就可以使用C++11版本。PKG_CXXFLAGS = -std=c++11
// [[Rcpp::export]]
NumericMatrix compute(int width, int height)
{
vector<data_t> weights(width * height);
compute_weights(weights);
NumericMatrix mat(height, width);
copy(begin(weights), end(weights), mat.begin());
return mat;
}
如果NumericMatrix在函数返回时被移动,则上述包装函数仍然有效,否则将创建一个新对象。
Rcpp
是否利用了移动语义?如果没有,是否有任何解决方法来避免构建副本?
// [[Rcpp::plugins(cpp11)]]
,作为编辑Makevars
的较不侵入性的替代方法。 - nrussell