<分区>
我正在练习一个关于数组的问题,我必须在其中找到独特的元素。现在为此,我的逻辑是找到数组中的最大元素并为其定义位集。但问题是 bitset 需要一个常数值,所以如何克服这个问题,下面是我的一些问题:
a) 我可以随便定义一个可变大小的位集吗?
b) 如果不是,那么使用 vector<bool>
的最佳方法是什么?或 vector<char>
?
c) 我知道 boost 有一个动态位集,但是当我这样做是为了学习时,我想知道其他方法。
<分区>
我正在练习一个关于数组的问题,我必须在其中找到独特的元素。现在为此,我的逻辑是找到数组中的最大元素并为其定义位集。但问题是 bitset 需要一个常数值,所以如何克服这个问题,下面是我的一些问题:
a) 我可以随便定义一个可变大小的位集吗?
b) 如果不是,那么使用 vector<bool>
的最佳方法是什么?或 vector<char>
?
c) 我知道 boost 有一个动态位集,但是当我这样做是为了学习时,我想知道其他方法。
最佳答案
std::bitset<N>
模板需要预先固定大小。 std::vector<bool>
是 C++ 标准提供可变长度位 vector 的方式,它提供类似于可以增长和收缩的位集的功能。
至于用vector<char>
是好是坏或 vector<bool>
: vector<bool>
是实现此目标的更直接的方法。我会先使用它,然后切换到 vector<char>
如果性能 Not Acceptable 。一般来说,最好先尝试编写最干净、最直接的实现,然后再进行优化。
希望这对您有所帮助!
关于c++ - 可变大小位集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14433626/