我想存储和操作非常大的整数,如果不使用预先构建的库,最好的方法是什么?
基于另一个StackOverflow用户所说的内容:
std :: string对象将被复制到堆栈中,但字符串体不会 - 它将在堆上分配。实际的限制将取决于系统和程序的内存使用情况,在32位系统上可能会有一千万到十亿个字符。
我只想到了两种简单的方法,这两种方式都需要我自己编写类。第一种是使用向量和字符串,第二种是将大整数分解为整数数组中的单独块,并将总数加起来。
我电脑上字符串的max.size()是4294967291.
我决定写自己的课。 感谢您的帮助:C++ char vector addition
答案 0 :(得分:1)
如果取决于这个整数的用法,但为了保持数字的语义并使你的类编码更容易,我建议使用long
整数的向量。
使用std::string
对代码设计和维护来说要复杂得多。
您必须重新定义每个运算符,并考虑从您的一个数字块到另一个运算符的计算传播。
答案 1 :(得分:0)
通常的方法是使用int(long等)的数组(向量等),而不是字符串。
首先查看现有的大整数类,即使你不能逐字逐句地为你的作业使用。
答案 2 :(得分:0)
当我们在比赛中遇到类似问题时,我们使用向量,每个单元格包含一位数字。这样你就可以存储一个非常大的数字。