需要存储非常大的整数,所以我使用boost :: multiprecision :: cpp_int。问题是,当使用这种新类型时,我无法弄清楚如何使用它从pow()和rand()等其他函数获取我想要的值。对pow()和rand()函数使用boost cpp_int
我需要存储一个非常大的数,这是通过指数计算得出的。但pow()函数本身不能处理如此大的数字,rand()返回基本整数。
更具体地说,我只需要存储值2^1024并生成一个介于1和2^1024之间的随机数。但我一直在努力实现这个目标。
cpp_int x = pow(2,1024);
x = rand() % x + 1;
像这样的东西不起作用的原因我上面说过。我也尝试了boost :: multiprecision :: pow,但是这似乎不适用于cpp_int。我需要跳过哪些环节才能让这些相对简单的操作使用大整数?
参见[用于产生随机数的文档(http://www.boost.org/doc/libs/1_63_0/libs/multiprecision/doc/html/boost_multiprecision/tut/random.html )和[整数运算的文档](http://www.boost.org/doc/libs/1_63_0/libs/multipreci氮氧化硅/ DOC/HTML/boost_multiprecision /啧啧/ gen_int.html)。 – Mankarse
我之前确实看到过这些,但我注意到他们使用了“Integer”类型,而不是cpp_int。 boost.integer也可用于像cpp_int这样的庞大数字吗? – Bob
'整数'是函数模板的模板类型参数。 'cpp_int'符合'Integer'的类型要求,所以函数模板可以和'cpp_int'类型的值一起使用。 – Mankarse