因此,对于BigInt问题,我想添加一个运算符,我该如何更改代码呢?这只是为了练习,但我在寻找变革解决方案时遇到了一些问题。
这是我的运营商+:
int carry = 0;
int sum;
BigInt result;
list<int>::reverse_iterator rit1 = number.rbegin();
list<int>::reverse_iterator rit2 = operand.number.rbegin();
while ( (rit1 != number.rend()) || (rit2 != operand.number.rend()) )
{
sum = 0;
if (rit1 != number.rend())
{
sum += *rit1;
rit1++;
}
if (rit2 != operand.number.rend())
{
sum += *rit2;
rit2++;
}
sum += carry;
result.number.push_front(sum % 10);
carry = sum / 10;
}
if (carry > 0)
result.number.push_front(carry);
return result;
答案 0 :(得分:0)
为什么不用operator-
......来构建x + -y
?如果你还没有否定操作符,那么添加起来似乎很好,也更容易。然后你需要修复你的operator+
以处理负数,但如果不能,那对任何人都没有用。