2012-05-14 18 views
10

Sto cercando una classe BigInt buona e di base in C++, trovo molta implementazione ma la maggior parte delle volte è un'implementazione complessa per la libreria crittografica ...Un'implementazione buona e di base della classe BigInt in C++

Con basic, intendo che BigInt può gestire BigInt, long long e stringhe con sovraccarico dell'operatore. Se avessi tempo, l'ho fatto da solo ma non ho il tempo di creare un'intera classe BigInt.

+3

Penso che GMP abbia wrapper di classe, non è vero? –

+0

@SethCarnegie: Sì, ma GMP è in C. (Vorrei qualcosa nel C++ moderno che utilizza l'overloading dell'operatore) – Bebeoix

+0

Un wrapper _class sarebbe necessariamente in C++ poiché C non ha classi. –

risposta

5

Here's one. Non l'ho usato, ma non sembra troppo complesso, ed è stato il primo risultato quando ho cercato su google "bigint C++".

+0

La libreria ha a che fare con molti tipi diversi da BigInteger come BigUnsigned e BigUnsignedInABase, non così semplice di una sola classe BigInt. – Bebeoix

+0

Se non vuoi BigUnsignedInABase, sei libero di non usarlo. Personalmente, non penso che troverai nulla di più semplice. Prendere o lasciare. –

+0

Mi chiedevo qualcosa di molto più semplice/facile. – Bebeoix

17

La libreria più semplice che conosca è InfInt. Consiste di un solo file di intestazione. Il suo utilizzo è abbastanza semplice. Ecco un codice di esempio:

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

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

Ecco un collegamento aggiornato al [Guru dell'Influenza] (https://github.com/sercantutar/infint). Ecco un collegamento di download permanente per [InfInt.h] (https://web.archive.org/web/20170509111229/https://raw.githubusercontent.com/sercantutar/infint/master/InfInt.h) – Hydranix