Определить большой битовый набор в C ++

В моей программе мне нужно проверить, не сгенерировал ли я уже значение из набора 2,5 * 10 ^ 9. Я ожидаю сгенерировать примерно половину набора, и мне нужен быстрый способ его проверки и обновления. Битовый набор показался мне хорошей идеей, поскольку он требует не слишком много памяти (1 бит на значение) и работает быстро.

Проблема в том, что когда я определяю свой набор в своем классе, я получаю segmentation fault , так как размер слишком велик (работает с меньшими размерами).

private:
  std::bitset<2500000000UL> cover; // not working
  std::bitset<25000UL> cover; // working

Есть идеи?

Спасибо

PS: Я бы предпочел не использовать внешнюю библиотеку, если это возможно. Я уже использую GMP , но не думаю, что у них есть реализация с набором битов для больших чисел.

10
задан Martin Trigaux 25 April 2011 в 15:44
поделиться