在我的程序中,我需要检查我是否已经在一组 2.5*10^9 中生成了一个值。我希望生成大约一半的集合,并且需要有一种快速的方法来检查和更新它。在我看来,bitset 是一个好主意,因为它不需要太多内存(每个值 1 位)并且速度很快。
问题是,当我在课堂上定义我的集合时,我得到了一个segmentation fault
,因为尺寸太大(它适用于较小的尺寸)。
private:
std::bitset<2500000000UL> cover; // not working
std::bitset<25000UL> cover; // working
任何的想法 ?
谢谢
PS:如果可能的话,我宁愿不使用外部库。我已经在使用GMP,但我认为他们没有针对大量数字设置的实现。