在C++中存储大整数

Storing large integers in C++

本文关键字:整数 存储 C++      更新时间:2023-10-16

我想存储和操作非常大的整数,在不使用预构建库的情况下,最好的方法是什么

根据另一位StackOverflow用户的说法:

std::string对象将被复制到堆栈上,但字符串主体不会——它将在堆上分配。实际的限制将取决于系统和程序内存的使用,在32位系统上可能是1000万到10亿个字符。

我只想了两种简单的方法,这两种方法都要求我自己写课。第一种是使用向量和字符串,第二种是将一个大整数分解为整数数组中的单独块,并将总数相加。

在我的计算机上,字符串的最大大小()是4294967291。

我决定写我自己的课。感谢您的帮助:C++字符矢量添加

编辑:正在处理:https://github.com/Jyang772/Large_Number_Collider

如果取决于这个整数的用法,但为了保持数字的语义并使类编码更容易,我建议使用long整数的向量。对于代码设计和维护来说,使用std::string将更加复杂。

你必须重新定义每个运算符,并考虑计算从一个数字块到另一个的传播。

通常的方法是使用int(longs等)的数组(vector等),而不是字符串。

从现有的大整数类开始,即使你不能在作业中逐字逐句地使用一个。

当我们在比赛中遇到类似的问题时,我们使用向量,每个单元格包含一位数字。通过这种方式,您可以存储大量数据。