D中的固定大小位数组
如果我想要一个编译时大小的位数组(在堆栈上),我的替代方案是什么 我在想D中的固定大小位数组,d,bitarray,compile-time-constant,bitvector,D,Bitarray,Compile Time Constant,Bitvector,如果我想要一个编译时大小的位数组(在堆栈上),我的替代方案是什么 我在想 struct Bitset(size_t nBits) { enum wsz = 8 * size_t.sizeof; // Word-Size. enum nBlocks = nBits/wsz + nBits % wsz * wsz; alias _bits this; size_t[nBlocks] _bits; } 以及bt和core.bitop 会适合我的需要 有没有人已经为此编
struct Bitset(size_t nBits) {
enum wsz = 8 * size_t.sizeof; // Word-Size.
enum nBlocks = nBits/wsz + nBits % wsz * wsz;
alias _bits this;
size_t[nBlocks] _bits;
}
以及bt
和core.bitop
会适合我的需要
有没有人已经为此编写了一个模板以及一些漂亮的布尔运算?我只需检查一下是否使用了堆栈。如果没有,获取源代码并修改它
IMHO BitArray可以通过某种选项进行改进,无论您是否希望它出现在堆栈上……可能有您需要编辑的内容:我认为它不会出现在堆栈上……不过,我想到的另一件事是复制/粘贴bitmanip结构(如果它看起来像您需要的)并用静态阵列替换动态阵列背板。不应该有太大的改动,尽管我还没有真正尝试过。@AdamD.Ruppe:我就是这么做的。我花了大约半个小时将BitArray转换为静态大小的位集,并使UnitTests通过。@AdamD.Ruppe:一个问题。为什么
BitArray
只包含init
成员而不包含构造函数?看起来这是尚未完全更新的D1 std.BitArray的端口(它仍然使用老式的运算符重载)。D1没有结构构造函数,所以必须使用init方法。(是的,肯定是一个端口,请参阅我对您的另一个问题的回答,其中也有到旧文档+源的链接)是的,同意。这就是D的用途…自适应:)