[英]Passing a boolean R vector to C dynamic_bitset
將布爾R矢量傳遞給C ++ dynamic_bitset
向量的最佳方法是什么? 有沒有辦法使用指針和向量長度來構造一個dynamic_bitset
對象,就像矢量類一樣? 你會推薦使用Rcpp嗎?
謝謝你的幫助和時間......
我會像這樣創建dynamic_bitset
:
#include <Rcpp.h>
#include <boost/dynamic_bitset.hpp>
using namespace Rcpp ;
// [[Rcpp::export]]
void create_dynamic_bitset( LogicalVector x ){
int n = x.size() ;
boost::dynamic_bitset<> bs(n);
for( int i=0; i<n; i++) bs[i] = x[i] ;
// do something with the bitset
for (boost::dynamic_bitset<>::size_type i = 0; i < x.size(); ++i)
Rcout << x[i];
Rcout << "\n";
}
在內部,R邏輯向量只是int
數組。 所以沒有更直接的方法來構造dynamic_bitset
,你必須迭代。
另外,請注意輸入LogicalVector
的缺失值。
或者,您可能將輸入數據存儲為原始向量(Rcpp類RawVector
),使用dynamic_bitset<Rbyte>
並使用塊構造函數:
void create_dynamic_bitset( RawVector x ){
boost::dynamic_bitset<Rbyte> bs(x.begin(), x.end());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.