2013-03-04 17 views
6

W oparciu o numer question I asked earlier pobrałem i skonfigurowałem doładowanie. Mam ten kod:C++ Zwiększenie ilości przechowywanych dużych ilości pamięci

#include <stdlib.h> 
#include <boost\multiprecision\gmp.hpp> 
using namespace std; 
using namespace boost::multiprecision; 

void main() { 
    mpz_int N(567014094304930933548155069494723691156768423655208899778686163624192868328194365094673392756508907687565332345345678900976543567890976543565789054335678097654680986564323567890876532456890775646780976543556789054367890765435689876545898876587907876535976565578907654538790878656543687656543467898786565457897675645657689756456578656456768654657898865567689656890795587907654678798765787897865654657897654678965465786867278762795432151914451557727529104757415030674806148138138281214236089749601911974949125689884222023119844272122501649909415937); 

} 

Ale kiedy mogę skompilować mówi

IntelliSense: integer constant is too large 

Jeśli mpz_int nie jest to, co mam do wykorzystania, to co powinno się używać dla dużych wskazówki od doładowania?

+1

Z gmpxx, można po prostu napisać '567014094304930933548155069494723691156768423655208899778686163624192868328194365094673392756508907687565332345345678900976543567890976543565789054335678097654680986564323567890876532456890775646780976543556789054367890765435689876545898876587907876535976565578907654538790878656543687656543467898786565457897675645657689756456578656456768654657898865567689656890795587907654678798765787897865654657897654678965465786867278762795432151914451557727529104757415030674806148138138281214236089749601911974949125689884222023119844272122501649909415937_mpz' –

Odpowiedz

2

Próbujesz zbudować od liczby całkowitej dosłownym: co jest dokładnie to, dosłowna typu „int” i zdolne tylko trzyma „Int” wartości wielkości. Możesz albo:

1) Umieść dużą stałą całkowitą w cudzysłowach, tak aby wartość była skonstruowana z ciągu znaków, lub 2) Tylko z cpp_int, użyj zdefiniowanej przez użytkownika obsługi literału, aby skonstruować z rozszerzonej dokładności literału , zobacz http://www.boost.org/doc/libs/1_55_0/libs/multiprecision/doc/html/boost_multiprecision/tut/lits.html Należy zauważyć, że wymaga to kompilatora C++ 11 - VC++, którego używasz, nie ma jeszcze wymaganych funkcji językowych do obsługi tego. Zauważ, że jest to prawdziwa inicjalizacja constexpr, a nie ukryty build-from-string-at-runtime, którego używa gmpxx (koniecznie, ponieważ wymagana jest alokacja pamięci).

Powiązane problemy