c++ - 我应该为 BigInt 类使用什么数据结构

标签 c++ math data-structures biginteger

我想实现一个能够处理非常大的数字的 BigInt 类。我只想对数字进行加法和乘法运算,但是该类还应该处理负数。

我想将数字表示为字符串,但是将字符串转换为 int 并返回以进行添加会产生很大的开销。我想像在高中一样实现加法,添加相应的订单,如果结果大于 10,则将进位添加到下一个订单。

然后我认为最好将它作为一个 unsigned long long int 数组来处理,并保持符号由 bool 分隔。有了这个,我担心 int 的大小,因为据我所知,C++ 标准只保证 int < float < double。如果我错了纠正我。因此,当我达到某个数字时,我应该向前移动数组并开始将数字添加到下一个数组位置。

是否有适合或更好的数据结构?

最佳答案

所以,您想要一个已知大小的动态整数数组?

听起来像 vector<uint32_t>应该适合你。

关于c++ - 我应该为 BigInt 类使用什么数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9942595/

相关文章:

c++ - 如何检查字符串的长度并返回带有前导零的值

使用 C++ 成员的 Python ctypes

linux - 用数字 bash 变量算术?

android - 将一个圆圈分成不同的区域作为飞镖盘?

algorithm - mod,prime -> 逆可能

java - 如何使用移位运算符取反一个数

algorithm - 与后缀树的隐式表示匹配的字符串

c++ - 优化非成本变量访问

c++ - 为什么 C++ 允许我们在声明变量时将变量名括在括号中?

具有可变大小元素的 C++ "vector"