gpt4 book ai didi

c++ - 将 bool R vector 传递给 C dynamic_bitset

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:44:40 24 4
gpt4 key购买 nike

将 R bool vector 传递给 C++ dynamic_bitset vector 的最佳方法是什么?有没有一种方法可以使用指针和 vector 长度来构造一个 dynamic_bitset 对象,就像 vector 类一样?您会推荐使用 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 逻辑 vector 只是 int阵列。所以没有更直接的方法来构造 dynamic_bitset ,您必须进行迭代。

此外,请注意输入中的缺失值 LogicalVector .

或者,您可以将输入数据存储为原始 vector (Rcpp 类 RawVector),使用 dynamic_bitset<Rbyte>并使用 block 构造函数:

void create_dynamic_bitset( RawVector x ){  
boost::dynamic_bitset<Rbyte> bs(x.begin(), x.end());
}

关于c++ - 将 bool R vector 传递给 C dynamic_bitset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17928501/

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