Вот что у меня есть:Заполнение массивов в C++ без перевода индексов
int t[MX];
Теперь я хотел бы переписать этот код таким образом, чтобы эффективно добавить один элемент в начало этого массива, не имея для перевода всей индексации на 1 в остальной части кода. Решение этой проблемы может быть что-то вроде этого:
int _t[MX+1];
int * const t = _t+1;
Проблема с этим подходом является то, что сейчас что-то вроде этого больше не работает:
memset(t, 0, sizeof t);
Проблема заключается в том, что sizeof t
возвращает 4, вместо MX * 4, как я бы этого хотел.
Одним из возможных решений может быть:
struct
{
int a;
int b[MX];
} _t;
int (&t)[MX] = _t.b;
Но я нахожу это довольно безвкусный и неудовлетворительным. Итак, мой вопрос: Есть ли лучший способ?
Зачем вам это использовать над 'std :: vector'? – JBL
Я не хочу переписывать ничего, кроме этой небольшой части кода. Я хотел бы сохранить код как можно более простым, а не вводить некоторые тяжелые классы. Во всяком случае, я действительно не понимаю, как это поможет. – toi333
, тогда вы должны отметить его как 'c' - здесь не так много C++. Кстати, как тяжело? Std :: vector? –