【问题标题】:Fixed-Size Bit-Array in DD中的固定大小位数组
【发布时间】: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


【解决方案1】:

我会简单地检查BitArray 是否使用堆栈。不行的话,抓源码修改一下吧……

恕我直言,无论您是否希望它在堆栈上,都可以通过某种选项来改进 BitArray...

【讨论】:

  • 是的,同意。这就是 D 的用途……适应性 :)
猜你喜欢
  • 2012-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多