gpt4 book ai didi

c++ - 为什么当我用 Rcpp 编写时我不需要包含一些我应该包含在纯 C++ 中编写的库?

转载 作者:行者123 更新时间:2023-11-30 01:15:40 25 4
gpt4 key购买 nike

我正在使用 Rcpp 运行以下代码块

src <- '
Rcpp::NumericVector vec(vx);
double p = Rcpp::as<double>(dd);
double sum = 0.0;
for (int i=0; i<vec.size(); i++) {
sum += pow(vec[i], p);
}
return Rcpp::wrap(sum);
'

fun <- cxxfunction(signature(vx="numeric", dd="numeric"),
src, plugin="Rcpp")

fun(1:4,2)

我得到了结果 30(正确)。如果我在纯 C++ 中运行函数 pow(x,y) 我需要添加

#include <math>

为什么我不需要在 Rcpp 下编写?

最佳答案

狭义地回答你的问题:

  • 因为你的 #include <Rcpp.h>导致为您包含其他 header

作为Rcpp.h为您包含它们(以及 Josh 的 grep 技巧;我仍然会在命令行中这样做)。您使用较旧的 cxxfunction()来自包裹 inline , 它添加了 include对于 Rcpp.h为你。 Rcpp Attributes 更简单(请参阅我对 CDterman 的回答的评论),它还为您添加了所需的 header 。

另请注意 pow()被定义为标量函数(即 double 输入,double 输出),正如 CDeterman 所说,在 Rcpp 糖中(它以向量化方式用于 Rcpp 对象)。您可以通过显式命名空间使用来控制您使用的是:即 std::pow()会得到前者。

关于c++ - 为什么当我用 Rcpp 编写时我不需要包含一些我应该包含在纯 C++ 中编写的库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28094208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com