在C ++中存储大整数

时间:2013-11-28 08:39:58

标签: c++ integer

我想存储和操作非常大的整数,如果不使用预先构建的库,最好的方法是什么?

基于另一个StackOverflow用户所说的内容:

  

std :: string对象将被复制到堆栈中,但字符串体不会 - 它将在堆上分配。实际的限制将取决于系统和程序的内存使用情况,在32位系统上可能会有一千万到十亿个字符。

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

我电脑上字符串的max.size()是4294967291.

我决定写自己的课。 感谢您的帮助:C++ char vector addition

编辑: 正在努力:https://github.com/Jyang772/Large_Number_Collider

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

首先查看现有的大整数类,即使你不能逐字逐句地为你的作业使用。

答案 2 :(得分:0)

当我们在比赛中遇到类似问题时,我们使用向量,每个单元格包含一位数字。这样你就可以存储一个非常大的数字。