Добрый день, каждый раз, когда я пишу длинку, мне больно .
const int LOG = 50, RADIX = 1e+9;
struct BigInt {
int a[LOG], len;
BigInt(int x = 0) {
len = 1;
memset(a, 0, sizeof a);
a[0] = x;
}
BigInt operator+(BigInt &other) {
BigInt res;
res.len = max(len, other.len);
int c = 0;
for (int i = 0; i < res.len || c; i++) {
res.len = max(res.len, i + 1);
int t = c + a[i] + other.a[i];
c = t / RADIX;
res.a[i] = t % RADIX;
}
return res;
}
BigInt operator+=(BigInt other) {
return *this = *this + other;
}
};
Я не раз ошибаюсь, пишу место res.a[i] просто res[i], да и с идейной точки зрения это логично. И тут до меня дошло, что оператор[] тоже можно перегрузить, но как это сделать так, чтобы можно было ставить его в левостороннюю часть выражения я не знаю, кто мне может с этим помочь? То есть я хочу, чтобы я мог написать выражение: res[i] = 1; и оно было эквивалентно res.a[i] = 1;
Upd: решено, спасибо!