我在数组上练习一个问题,我必须找到独特的元素。现在我的逻辑是找到数组中的max元素并为其定义bitset。但问题是bitset需要一个恒定的值,所以如何克服这一点,下面是我的一些问题:
a)我是否可以通过任何机会定义具有可变大小的位集?
b)如果没有,那么使用vector<bool>
或vector<char>
的最佳方法是什么?
c)我知道boost有一个动态的bitset,但是当我这样做学习时,我想知道其他方法。
答案 0 :(得分:11)
std::bitset<N>
模板需要提前确定大小。 std::vector<bool>
是C ++标准提供可变长度位向量的方式,它提供类似于可以增长和缩小的位集的功能。
至于使用vector<char>
还是vector<bool>
是好还是坏:vector<bool>
是实现这一目标的直接方式。我会先使用它,然后切换到vector<char>
,如果性能不可接受的话。一般来说,最好先尝试编写最干净,最简单的实现,然后再进行优化。
希望这有帮助!