Более распространенной операцией сложения является операция “Длинное + длинное”. Если имеем дело с частным случаем, когда одно из слагаемых является длинным числом, а второе строго меньше основания системы счисления (<osn), т.е. является цифрой, то в целях оптимизации и ускорения работы программы следует подумать над более быстрой реализацией.
Представляю свою реализацию:
- BigInt operator + (const BigInt &a, const int &b)
- {
- BigInt res = a;
- int pos = 0;
- res.digits[0] += b;
- while (res.digits[pos]>=osn)
- {
- res.digits[pos+1]++;
- res.digits[pos++]-=osn;
- }
- if (res.digits[res.amount])
- res.amount++;
- return res;
- }
* This source code was highlighted with Source Code Highlighter.
Практически идентичную реализацию имеет и операция “длинное – короткое”.
Этот комментарий был удален автором.
ОтветитьУдалитьоператор + принимает два аргумента - два слагаемых. То о чем вы говорите скорее всего это реализация знака +, реализованного внутри структуры/класса, где требуется указать только второй аргумент(слагаемое). Так что здесь никакой ошибки нет
Удалить