16

我正在练习一个关于数组的问题,我必须在其中找到独特的元素。现在为此,我的逻辑是找到数组中的最大元素并为此定义位集。但问题是 bitset 需要一个常数值,所以如何克服这个问题,下面是我的一些问题:

a)我可以用可变大小定义位集吗?
b)如果不是,那么使用vector<bool>or的最佳方法是什么vector<char>
c)我知道 boost 有一个动态的位集,但是当我这样做是为了学习时,我想知道其他方法。

4

1 回答 1

20

std::bitset<N>模板需要预先固定大小。这std::vector<bool>是 C++ 标准提供可变长度位向量的方式,它提供类似于可以增长和缩小的位集的功能。

vector<char>至于使用or是更好还是更差vector<bool>:这vector<bool>是实现这一目标的更直接的方法。我会先使用它,然后vector<char>在性能不可接受时切换到它。一般来说,最好先尝试编写最干净、最直接的实现,然后再进行优化。

希望这可以帮助!

于 2013-01-21T06:51:11.040 回答