Есть ли простой способ заполнить 2d массив после инициализации?

0

У меня в настоящее время есть 2d-массив в моей программе, который хранит координаты для куба. Он инициализируется вверху и легко заполняется значениями, которые я хочу в нем, таким образом.

float cubeRef[3][8] = { { -1, 1, 1, -1, -1, 1, 1, -1 },
                        { 1, 1, -1, -1, 1, 1, -1, -1 },
                        { 1, 1, 1, 1, -1, -1, -1, -1, }     };

Однако во время моей программы координаты меняются, и у меня есть функция, которая "возвращает" их обратно к значениям по умолчанию, которые вы видите выше. Однако, если я попытаюсь сбросить их, используя тот же метод, что и раньше.

cubeRef = { { -1, 1, 1, -1, -1, 1, 1, -1 },
            { 1, 1, -1, -1, 1, 1, -1, -1 },
            { 1, 1, 1, 1, -1, -1, -1, -1, }     };

Он не будет работать здесь, с сообщением об ошибке "Выражение должно быть изменяемым значением".

Почему я не могу заполнить массив 2d после инициализации так же, как я могу, когда я его создал? И как я могу вернуть массив 2d в его значения по умолчанию, не заполняя каждое пространство отдельно?

  • 1
    Используйте std::array .
Теги:
arrays

1 ответ

3

Вы не можете назначить массив, это просто невозможно.

У вас может быть два массива, тот, который вы модифицируете, и тот, который содержит значения по умолчанию. Затем, когда вы хотите сбросить модифицируемый массив, вы просто копируете из массива по умолчанию, используя либо std::copy, memcpy либо в цикле.

В противном случае вам придется вручную устанавливать каждую запись по одному.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню