Здравствуйте! Возможно, вопрос уже был, однако я усердно искал и не нашел. Как инициализировать динамический n-мерный массив нулями при объявлении? Допустим:
const double arr_size = 10;
double *parr_x1 = new double[arr_size]();
но, это инициализация 0 для одномерного массива. А как инициализировать, например, нечто подобное:
const double arr_size = 10;
double **parr_x2 = new double* [arr_size];
for (int i = 0; i < arr_size; i++)
parr_x2[i] = new double [arr_size];
Я так полагаю, что добавление скобок в цикле не поможет?
Поможет... так и инициализируйте:
const size_t arr_size = 10;
double **parr_x2 = new double* [arr_size];
for (int i = 0; i < arr_size; i++)
parr_x2[i] = new double [arr_size]{};
Убедитесь, что все занулено:
for(size_t i = 0; i < arr_size; ++i)
{
for(size_t j = 0; j < arr_size; ++j)
{
cout << setw(5) << parr_x2[i][j];
}
cout << endl;
}
Так как память, выделенная под n-мерный массив, выделяется единым блоком памяти, можно воспользоваться функцией memset, которая сбросить каждый байт памяти в 0
#include <cstring>
std::memset(parr_x2, 0, sizeof(double)*arr_size*arr_size);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как заполнить стандартный контейнер очередь (queue) данными из файла с помощью стандартных алгоритмов?
Добрый день! Я студент технического вуза и самостоятельно пытаюсь выучить c++Что пытаюсь сделать :