目录
大整数类的引入与声明
在C语言中,长度较长的数字通常使用高精度——也就是使用数组存储该长数字的每一位。C++中也可以使用类似的方法,但是STL和类(结构体)的存在可以使高精度使用更加方便:
C++中STL的存在可以使用不定长数组vector代替C中的定长数组,不需要考虑数字位数且不会浪费空间;
C++中类的存在可以在vector的基础上添加构造函数和其他成员函数(多用运算符重载函数)
所以可以定义以下的结构体BigInteger存储高精度的非负整数:
struct BigInteger{
//首先定义两个静态成员变量————规定vector中每一个元素可以存储的最大数据
static const int BASE = 100000000; //应用于使用数字赋值
static const int WIDTH = 8; //应用于使用字符串赋值
//接着定义vector
vector<int> s;
//构造函数
BigInteger(long long num=0){*this=num;}
//使用数字赋值的赋值运算符重载
BigInteger operator=(long long num)
{
s.clear() //赋值则先清除原有数据
do{