This question already has answers here:
Define bitset size at initialization?

(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/

10-11 15:23
查看更多