我正在寻找一种方法,使用模板或类似的方法返回不同大小的bitset。我还没有真正有机会玩它太多,但我只是好奇,如果有人曾经搞过这个,并且设法完成了这个。
这里的目标是避免为4种不同大小的位集(32,17,10,5)编写4个函数。我想我可以使用某种模板来完成这个(只是将模板直接放在函数本身,而不是类实现或类似的东西)。
所以它看起来像这样:
template<something SIZE>
static bitset<SIZE> function(bitset<SIZE>);
我基本上会传入一个大小为SIZE的bitset,然后在完成某些操作后返回该大小的bitset。
我可以用矢量和后来演员来完成这个,但我觉得有某种方法可以完成我在这里尝试做的事情。如果有人有任何想法,请随时告诉我。我打算稍后深入研究一下并进行一些测试,所以当我发现一些事情时,我会更新它。
提前致谢。
- - - - - - - - 编辑
我已经开始实施Mark_B的解决方案,看起来效果很好。如果有人有另一个实现,我很高兴看到它,但我只是使用一个模板来实现它。
感谢您的快速回复。
答案 0 :(得分:2)
std::vector<bool>
是专门的,因此质量实现每个项目仅使用1位。它最接近标准库提供的可变长度位集。除此之外,您可以自己动手,或使用Boost dynamic_bitset
。
答案 1 :(得分:2)
有些东西是size_t
。
template<size_t SIZE>
bitset<SIZE> function(bitset<SIZE>);