返回可变大小的位集

时间:2015-04-06 16:58:42

标签: c++ templates bitset

我正在寻找一种方法,使用模板或类似的方法返回不同大小的bitset。我还没有真正有机会玩它太多,但我只是好奇,如果有人曾经搞过这个,并且设法完成了这个。

这里的目标是避免为4种不同大小的位集(32,17,10,5)编写4个函数。我想我可以使用某种模板来完成这个(只是将模板直接放在函数本身,而不是类实现或类似的东西)。

所以它看起来像这样:

template<something SIZE>
     static bitset<SIZE> function(bitset<SIZE>);

我基本上会传入一个大小为SIZE的bitset,然后在完成某些操作后返回该大小的bitset。

我可以用矢量和后来演员来完成这个,但我觉得有某种方法可以完成我在这里尝试做的事情。如果有人有任何想法,请随时告诉我。我打算稍后深入研究一下并进行一些测试,所以当我发现一些事情时,我会更新它。

提前致谢。

- - - - - - - - 编辑

我已经开始实施Mark_B的解决方案,看起来效果很好。如果有人有另一个实现,我很高兴看到它,但我只是使用一个模板来实现它。

感谢您的快速回复。

2 个答案:

答案 0 :(得分:2)

std::vector<bool>是专门的,因此质量实现每个项目仅使用1位。它最接近标准库提供的可变长度位集。除此之外,您可以自己动手,或使用Boost dynamic_bitset

答案 1 :(得分:2)

有些东西是size_t

template<size_t SIZE>
bitset<SIZE> function(bitset<SIZE>);