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