c++ - 返回可变大小的位集

标签 c++ templates bitset

我一直在寻找一种方法来使用模板或类似的东西返回不同大小的位集。我还没有真正有机会尝试太多,但我只是很好奇以前是否有人曾经搞砸过这个,并设法做到了这一点。

这里的目标是避免为 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/

相关文章:

c++ - 返回类时警告 : control may reach end of non-void function?

c++ - 如何读入文件的末尾(或刚好在末尾之前)的字符?

c++ - 使用多个参数值调用模板函数

c++ - 函数模板重载 : link error

c++ - 在 C++ 中获取类型的底层位的通用且可移植的方法是什么?

c++ - 作为返回值的 std::bitset 数组

c++ - 函数范式中嵌套循环的迭代过程

C++ 模板编程 : how to call type's function?

algorithm - 获得完整覆盖的最小二元向量集

c++ - 如何从模板类中的方法返回 NULL