Сначала я ищу способ инициализировать весь массив в одном конкретном значении. Хотя я знаю, что memset()
в <cstring>
может это сделать, я хочу сделать это более C++.
Затем я узнаю, что std::fill()
может быть способом сделать с одним размерным массивом
const int SIZE = 10;
int arr[SIZE];
std::fill(std::begin(arr), std::end(arr), 1);
Но это не работает, когда с 2d или многомерным массивом. Как я могу получить итератор многомерного массива?
Заранее спасибо.
2D-массивы смежны в памяти, поэтому вы можете делать
int arr[ROWS][COLS];
const size_t total_size = ROWS*COLS;
std::fill(&a[0][0], &a[0][0]+ total_size, 1);
где total_size
- общее количество элементов.
const int total_size = sizeof arr / 4;