This question already has answers here:
Define bitset size at initialization?
(6个答案)
3年前关闭。
我在数组上练习一个问题,在其中我必须找到独特的元素。现在,为此,我的逻辑是在数组中找到max元素并为此定义位集。但是问题是位集需要一个恒定值,因此如何克服这个问题,下面是我对此的一些疑问:
a)我是否可以任意定义大小可变的位集?
b)如果不是,那么使用
c)我知道boost具有动态位,但是在学习时我想知道其他方法。
(6个答案)
3年前关闭。
我在数组上练习一个问题,在其中我必须找到独特的元素。现在,为此,我的逻辑是在数组中找到max元素并为此定义位集。但是问题是位集需要一个恒定值,因此如何克服这个问题,下面是我对此的一些疑问:
a)我是否可以任意定义大小可变的位集?
b)如果不是,那么使用
vector<bool>
或vector<char>
的最佳方法是什么?c)我知道boost具有动态位,但是在学习时我想知道其他方法。
最佳答案
std::bitset<N>
模板需要预先固定大小。 std::vector<bool>
是C++标准提供可变长度位 vector 的方式,它提供的功能类似于可以增长和收缩的位集。
至于使用vector<char>
还是vector<bool>
是更好还是更坏:vector<bool>
是实现此目标的更直接的方法。我将从使用它开始,如果性能 Not Acceptable ,请切换到vector<char>
。通常,最好先编写最干净,最直接的实现,然后再进行优化。
希望这可以帮助!
关于c++ - 可变大小的位集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14433626/