Definieren Sie ein großes Bitset in C ++

8

In meinem Programm muss ich prüfen, ob ich bereits einen Wert in einer Menge von 2.5 * 10 ^ 9 erzeugt habe. Ich erwarte, ungefähr die Hälfte des Sets zu generieren und muss einen schnellen Weg haben, es zu überprüfen und zu aktualisieren. Das Bitset erschien mir eine gute Idee, da es nicht zu viel Speicher braucht (1 Bit pro Wert) und schnell ist.

Das Problem ist, dass ich, wenn ich mein Set in meiner Klasse definiere, ein segmentation fault bekomme, da die Größe zu groß ist (es funktioniert mit kleineren Größen).

%Vor%

Irgendeine Idee?

Danke

PS: Ich würde lieber nicht externe Bibliothek verwenden, wenn möglich. Ich verwende bereits GMP , aber ich denke nicht, dass sie eine Implementierung für große Zahlen haben.

    
Martin Trigaux 25.04.2011, 15:44
quelle

2 Antworten

15

Dies ist möglicherweise nicht Ihr Problem, aber versuchen Sie, das Bitset auf dem Heap neu zuzuweisen, anstatt den Stack zu verwenden.

Einige Systeme begrenzen die Größe des Stapels, was möglicherweise Probleme für Sie verursacht.

    
MTilsted 25.04.2011, 15:47
quelle
-1

Verwenden Sie std :: vector anstelle von std :: bitset für große Größen.

    
J.Kraftcheck 28.09.2015 20:53
quelle

Tags und Links