【发布时间】:2020-06-13 19:36:49
【问题描述】:
我想在运行时决定 bitset 的大小。
但是std::bitset<N> 只接受 N 的 constexpr 值,甚至不接受 const 值。
这意味着必须在编译之前确定位集的大小。
我知道std::vector 为 bool 数组提供优化,
但它缺少我需要的那些有用的 bitset 成员。
问题 1:为什么 N 必须是 constexpr 值?
好吧,我猜那是因为 bitset 是模板,但是,这仍然是巨大的不便。
Bitset 可能是一个类,而不是一个模板。
它的构造函数可以将 size_t 作为参数,而不是我可以创建可变长度的位集。std::array 也有同样的问题。
可能是std::array<type> foo(size, values)。
问题 2:是否有任何“黑客”可以让我创建可变长度的位集?
考虑到模板的工作原理,我很确定不会有任何内容。
但也许,有一些聪明的把戏:)
如果没有,我将不得不使用 std::vector<bool> 并自己实现 bitset 成员。
【问题讨论】:
标签: c++ templates std bitset variable-length-array