【发布时间】:2013-11-09 05:57:50
【问题描述】:
如果我想要一个编译时大小的位数组(在堆栈上),我有哪些选择?
我在想类似的事情
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 的类似人员一起
会满足我的需要。
是否有人已经为此编写了模板以及一些不错的布尔运算?
【问题讨论】:
-
dlang.org/phobos/std_bitmanip.html 可能有你需要的编辑:我不认为它会进入堆栈...
-
想到的另一件事是复制/粘贴 bitmanip 结构(如果它看起来像您需要的那样)并用静态数组替换动态数组支持部分。应该不会太大的修改,虽然我还没有真正尝试过。
-
@AdamD.Ruppe:我就是这么做的。我花了大约半个小时将 BitArray 转换为静态大小的 BitSet 并使单元测试通过。
-
@AdamD.Ruppe:一个问题。为什么
BitArray只包含init成员而没有构造函数? -
看起来这是 D1 std.bitarray 的一个端口,尚未完全更新(它仍然使用旧式运算符重载)。 D1 没有 struct 构造函数,因此您必须使用 init 方法。 (是的,绝对是一个端口,请参阅我对您的其他问题的回答,其中也有指向旧文档+源的链接)
标签: d bitarray compile-time-constant bitvector