c++ - 可变大小位集

标签 c++ data-structures bitset

<分区>

我正在练习一个关于数组的问题,我必须在其中找到独特的元素。现在为此,我的逻辑是找到数组中的最大元素并为其定义位集。但问题是 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/

相关文章:

c++ - 指向单链表中内存地址的指针,其中没有变量表示每个元素

c++ - C++:如何获取位集的MSB(最高有效位)(使用按位运算符)?

c++ - C++ 中的可变长度位集

C++ 日期和时间

c++ - Qt c++ 在tableview中换行文本(richtext)

objective-c - Objective-C 中数组的哈希值如何?

Java BitSets 写入文件

c++ - C++ 中的 vector 和多态性

c++ - Google Protocol Buffer 比较

java - Java中如何操作数组?