Почему именно при таком обращении к матрице мы получаем все ее элементы?

При обращении к матрице в языке программирования C++, такой оператор, как matrix[row][column] обеспечивает доступ к определенному элементу матрицы.

Для понимания того, почему при таком обращении мы получаем все элементы матрицы, следует рассмотреть сами особенности работы с матрицами в C++.

Матрица в C++ представляет собой двумерный массив, то есть набор элементов, расположенных в виде таблицы с рядами и столбцами. Обращение к элементу матрицы происходит посредством указания индексов строки и столбца, в которых находится требуемый элемент.

В C++ индексация элементов массива начинается с нуля для обоих измерений: первое измерение соответствует строкам, второе - столбцам. Таким образом, для матрицы размером rows на columns, допустимые значения индексов будут от 0 до rows-1 для строк и от 0 до columns-1 для столбцов.

Когда мы обращаемся к элементу матрицы с использованием оператора matrix[row][column], мы указываем конкретную строку и столбец, где расположен требуемый элемент. При этом выражение matrix[row] сначала выбирает одномерный массив - строку, а затем оператор matrix[row][column] позволяет получить значение элемента по указанным индексам.

Можно сказать, что при обращении к элементу матрицы посредством matrix[row][column], мы фактически комбинируем два оператора индексации: первый - matrix[row], выбирает строку матрицы, а второй - matrix[row][column], выбирает элемент внутри этой строки по указанному столбцу.

Таким образом, когда мы выполняем итерацию по всем возможным значениям row и column, в цикле или при обходе матрицы, мы поочередно обращаемся ко всем элементам матрицы, что позволяет получить доступ и произвести операции с каждым из них.

В заключение, оператор matrix[row][column] позволяет обратиться к конкретному элементу матрицы в C++, а при итерации по значениям row и column можно обращаться ко всем элементам матрицы последовательно.