У вас есть несколько вариантов. Самым простым является примитивный 2-мерный массив:
int *mat = new int[width * height];
Чтобы заполнить его определенным значением, вы можете использовать std::fill()
:
std::fill(mat, mat + width * height, 42);
Чтобы заполнить его произвольными значениями, используйте std::generate()
или std::generate_n()
:
int fn() { return std::rand(); }
// ...
std::generate(mat, mat + width * height, fn);
Вам нужно будет запомнить delete
массив, когда вы закончите его использовать:
delete[] mat;
Так что это хорошая идея, чтобы обернуть массив в классе, чтобы вам не нужно было удалять его каждый раз при создании:
struct matrix {
matrix(int w, int h);
matrix(const matrix& m);
matrix& operator=(const matrix& m);
void swap(const matrix& m);
~matrix();
};
// ...
matrix mat(width, height);
Но, конечно, кто-то уже сделал работу за вас. Взгляните на boost::multi_array
.