Я новичок в Rcpp (хотя и с небольшим опытом работы с R и C ++) и пытаюсь написать код, который можно использовать как в Rcpp, так и в собственном C ++.
Как таковой,Я пишу некоторые функции-оболочки, которые возвращают фреймы данных, числовые векторы и тому подобное, которые создаются из различных контейнеров std
.
Мне бы хотелось, чтобы я мог установить флаг где-нибудь или иметь флаг, который автоматически определяет, используется ли код в нативном C ++ или Rcpp.
Мне было интересно, существует ли такой флаг или я должен просто создать его?
Наконец, мне стало интересно, был ли это лучший способ сделать то, чего я хотел достичь?
РЕДАКТИРОВАТЬ:
Это очень надуманный пример:
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::plugins(cpp11)]]
#include <vector>
#include <functional>
#include <algorithm>
#define RCPP
std::vector<double> multbyTwo(std::vector<double> input) {
std::transform(input.begin(), input.end(), input.begin(), std::bind(std::multiplies<double>(), std::placeholders::_1, 2));
return input;
}
#ifdef RCPP
// [[Rcpp::export]]
NumericVector timesTwo(NumericVector input) {
return wrap(multbyTwo(as<std::vector<double> >(input)));
}
#endif // RCPP
/***R
print(timesTwo(10))
***/
Это то, что я имел в виду - обертывание чистой функции C ++с Rcpp один.(Я знаю, что в этом конкретном случае есть неявные преобразования, но не было бы для той функции, которую я бы строил)