在C++中定义一个大的bitset

Mar*_*aux 10 c++ bitset

在我的程序中,我需要检查是否已经在一组2.5*10 ^ 9中生成了一个值.我希望生成大约一半的集合,并需要快速检查和更新它.在我看来,bitset是一个好主意,因为它不需要太多内存(每个值1位)并且速度很快.

问题是,当我在我的课程中定义我的设置时,我得到一个segmentation fault因为尺寸太大(它适用于较小的尺寸).

private:
  std::bitset<2500000000UL> cover; // not working
  std::bitset<25000UL> cover; // working
Run Code Online (Sandbox Code Playgroud)

任何的想法 ?

谢谢

PS:如果可能,我宁愿不使用外部库.我已经在使用GMP,但我不认为他们对大数字有一点设置.

MTi*_*ted 18

这可能不是你的问题,但尝试用new分配堆上的bitset,而不是使用堆栈.

有些系统会限制堆栈的大小,这可能会导致问题.