我想在运行时确定位集的大小。但是std::bitset<N>
仅接受N的constexpr值,甚至不接受const值。这意味着必须在编译之前确定位集的大小。
我知道std::vector
为布尔数组提供了优化,但它缺少我需要的那些有用的位集成员。
问题1:为什么N必须是constexpr值?好吧,我猜这是因为位集是模板,但这仍然带来很大的不便。位集可能是一个类而不是模板。它的构造函数可以将size_t作为参数,而不是我可以创建可变长度的位集。std::array
也有同样的问题。可能是std::array<type> foo(size, values)
。
问题2:是否有让我创建可变长度位集的'Hacks'?考虑到模板的工作原理,我很确定不会有任何问题。但是也许有一些聪明的把戏:)如果没有,我将不得不使用std::vector<bool>
并自己实现位集成员。