簡體   English   中英

將布爾R向量傳遞給C dynamic_bitset

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM