首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ Boost大容量存储

C++ Boost大容量存储
EN

Stack Overflow用户
提问于 2013-03-04 15:56:39
回答 2查看 2.8K关注 0票数 6

因此,基于question I asked earlier,我下载并安装了boost。我有这样的代码:

代码语言:javascript
复制
#include <stdlib.h>
#include <boost\multiprecision\gmp.hpp>
using namespace std;
using namespace boost::multiprecision;

void main() {
    mpz_int N(567014094304930933548155069494723691156768423655208899778686163624192868328194365094673392756508907687565332345345678900976543567890976543565789054335678097654680986564323567890876532456890775646780976543556789054367890765435689876545898876587907876535976565578907654538790878656543687656543467898786565457897675645657689756456578656456768654657898865567689656890795587907654678798765787897865654657897654678965465786867278762795432151914451557727529104757415030674806148138138281214236089749601911974949125689884222023119844272122501649909415937);

}

但是当我编译它的时候说

代码语言:javascript
复制
IntelliSense: integer constant is too large

如果mpz_int不是我应该使用的,那么我应该使用什么来处理boost中的大整数呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-04 16:12:13

从字符串构造它。您可以使用mpz_intcpp_int

http://liveworkspace.org/code/1KKxfm$6

票数 8
EN

Stack Overflow用户

发布于 2014-05-30 20:18:13

您正在尝试从一个整数文字构造:这就是一个"int“类型的文字,并且只能保存"int”大小的值。您可以执行以下任一操作:

1)把你的大整数常量放在引号里,这样值就是从一个字符串中构造出来的;或者2)如果只使用cpp_int,使用用户定义的文字支持来构造一个扩展精度的文字,请注意这需要一个C++11编译器--你正在使用的VC++还没有必要的语言特性来支持它。请注意,这是真正的常量表达式初始化,而不是gmpxx使用的隐藏的运行时构造-from-string-at- the (在需要内存分配的情况下是必需的)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15196953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档