在我的程序中,我需要检查是否已经在一个大小为 2.5*10^9 的集合中生成了某个值。我预计会生成大约一半的这个集合,并且需要一种快速的方式来检查和更新它。对我来说,位集似乎是一个不错的选择,因为它不需要太多的内存(每个值只需要 1 位)并且速度较快。但是问题在于,当我在类中定义我的集合时,由于尺寸太大,我得到了一个“分段故障”的错误(如果使用较小的尺寸,则可正常工作)。
private:
std::bitset<2500000000UL> cover; // not working
std::bitset<25000UL> cover; // working
有什么想法吗?
谢谢
PS:如果可能的话,我宁愿不使用外部库。 我已经在使用GMP,但我不认为它们有用于大数的位设置实现。