2012-05-14 8 views
10

Szukam dobrej i podstawowej klasy BigInt w C++, znajduję wiele implementacji, ale przez większość czasu jest to złożona implementacja dla biblioteki kryptograficznej ...Dobra i podstawowa implementacja klasy BigInt w C++

Podsumowując, mam na myśli, że BigInt może poradzić sobie z BigIntem, długim długiem i ciągami z przeciążeniem operatora. Gdybym miał czas, zrobiłem to sam, ale nie mam czasu na stworzenie całej klasy BigInt.

+3

Myślę, że GMP ma owijarki klasowe, prawda? –

+0

@SethCarnegie: Tak, ale GMP jest w C. (Chciałbym czegoś w nowoczesnym C++, który używa przeciążenia operatora) – Bebeoix

+0

Okładka _class_ musiałaby być koniecznie w C++, ponieważ C nie ma klas. –

Odpowiedz

5

Here's one. Nie używałem go, ale nie wygląda to zbyt skomplikowanie i był to pierwszy wynik, gdy googlełem "bigint C++".

+0

Biblioteka zajmuje się wieloma typami innymi niż BigInteger, takimi jak BigUnsigned i BigUnsignedInABase, nie tak łatwa jak tylko jedna klasa BigInt. – Bebeoix

+0

Jeśli nie chcesz BigUnsignedInABase, nie możesz z niego korzystać. Osobiście uważam, że nie znajdziesz nic prostszego. Zdecyduj sie. –

+0

Zastanawiam się nad czymś znacznie prostszym/prostszym. – Bebeoix

17

Najprostszą biblioteką, jaką znam, jest InfInt. Składa się z tylko jednego pliku nagłówkowego. Jego użycie jest dość proste. Oto przykładowy kod:

InfInt myint1 = "15432154865413186646848435184100510168404641560358"; 
InfInt myint2 = 156341300544608LL; 

myint1 *= --myint2 - 3; 
std::cout << myint1 << std::endl; 
+0

Oto zaktualizowany link do [InfInt github] (https://github.com/sercantutar/infint). Oto stały link do pobrania dla witryny [InfInt.h] (https://web.archive.org/web/20170509111229/https://raw.githubusercontent.com/sercantutar/infint/master/InfInt.h) – Hydranix