Rcpp против обычного C ++: флаг заголовка доступен? - PullRequest
0 голосов
/ 26 февраля 2019

Я новичок в 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 один.(Я знаю, что в этом конкретном случае есть неявные преобразования, но не было бы для той функции, которую я бы строил)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...