Разница между многомерным массивом в C ++ и Java
Предварительные требования: многомерный массив в C ++, многомерный массив в Java.
Многомерные массивы :
Многомерные массивы - это табличное представление массивов для хранения нескольких элементов. Эти измерения могут быть одномерными массивами, двухмерными массивами и т. Д. Многомерные массивы доступны как в C ++, так и в Java, но их реализация и некоторые свойства отличаются.
Реализация на C / C ++ :
В C ++ многомерный массив создается внутри как гигантский линейный массив. Синтаксис C ++ абстрагирует этот линейный блок памяти до 2- или 3-мерного поведения, что упрощает работу программиста.
Примеры:
Двумерный массив размером 2 строки x 3 столбца {{9, 45, 51}, {5, 25, 6}} реализуется следующим образом (предполагая, что целое число занимает 4 байта):
Следовательно, внутренняя формула для внутреннего элемента с определенным индексом задается как:
arr[rowIndex][colIndex] = arr + (rowIndex * noOfCols * sizeOfDataType) + coLIndex * sizeOfDataType
Предположим, что базовый адрес равен 3000 . Тогда arr [1] [1] = 3000 + (1 * 3 * 4) + 1 * 4 = 3000 + 12 + 4 = 3016 .
Из-за такой реализации количество столбцов должно быть одинаковым для каждой строки, и обязательно указать размер столбца при объявлении для правильного доступа к элементам.
Ниже представлена реализация многомерного массива на C ++:
C ++
// C++ program for multidimention array // implementation #include <iostream> using namespace std; // Driver Code int main() { // Create a 2d integer array, // dimensions: 3rows X 5cols int arr[3][5] = { { 23, 56, 34, 52, 63 }, { 40, 20, 96, 43, 97 }, { 75, 51, 10, 82, 43 } }; // Traversing of 2D array cout << "Printing entire 2d array: " << endl; // Iterate over the rows for ( int i = 0; i < 3; i++) { // Iterate over the cols for ( int j = 0; j < 5; j++) { cout << "arr[" << i << "][" << j << "]:" << arr[i][j] << " " ; } cout << endl; } return 0; } |
Печать всего 2d-массива: arr [0] [0]: 23 arr [0] [1]: 56 arr [0] [2]: 34 arr [0] [3]: 52 arr [0] [4]: 63 обр [1] [0]: 40 обр [1] [1]: 20 обр [1] [2]: 96 обр [1] [3]: 43 обр [1] [4]: 97 обр [2] [0]: 75 обр [2] [1]: 51 обр [2] [2]: 10 обр [2] [3]: 82 обр [2] [4]: 43
Реализация на Java :
В Java многомерный массив реализован как массив массивов, где каждый индекс базового массива относится к совершенно другому массиву. Итак, arr [rowIndex] возвращает весь одномерный массив, а arr [rowIndex] [coLIndex] возвращает элемент с индексом coLIndex в этом одномерном массиве.
Примеры:
A 2D array of dimensions 3 rows x 5 cols is implemented as follows:
Because of this structure, It is possible to have 2D arrays with different column sizes (even null values) in Java.
Ниже представлена реализация многомерного массива на Java:
Ява
// Java program for multidimensional // array implementation import java.io.*; class GFG { // Driver Code public static void main(String[] args) { // Create a 2D integer array // dimensions: 3rows X 5cols int [][] arr = { { 23 , 56 , 34 , 52 , 63 }, { 40 , 20 , 96 , 43 , 97 }, { 75 , 51 , 10 , 82 , 43 } }; // Traversing the 2D array System.out.println( "Printing entire 2d array: " ); // Iterate over the rows for ( int i = 0 ; i < arr.length; i++) { // Iterate over the cols for ( int j = 0 ; j < arr[i].length; j++) { System.out.print( "arr[" + i + "][" + j + "]:" + arr[i][j] + " " ); } System.out.println(); } System.out.println(); // Reassigning arr[2] to another // array // This is not possible in 2D // arrays in C++, instead of // there is array of pointers arr[ 2 ] = new int [] { 82 , 53 , 64 , 12 , 45 , 3 }; // Traversing the array again System.out.println( "Printing entire 2d array " + "afer modification: " ); // Iterate over the rows for ( int i = 0 ; i < arr.length; i++) { // Iterate over the cols for ( int j = 0 ; j < arr[i].length; j++) { System.out.print( "arr[" + i + "][" + j + "]:" + arr[i][j] + " " ); } System.out.println(); } } } |
Печать всего 2d-массива: arr [0] [0]: 23 arr [0] [1]: 56 arr [0] [2]: 34 arr [0] [3]: 52 arr [0] [4]: 63 обр [1] [0]: 40 обр [1] [1]: 20 обр [1] [2]: 96 обр [1] [3]: 43 обр [1] [4]: 97 обр [2] [0]: 75 обр [2] [1]: 51 обр [2] [2]: 10 обр [2] [3]: 82 обр [2] [4]: 43 Печать всего 2-го массива после модификации: arr [0] [0]: 23 arr [0] [1]: 56 arr [0] [2]: 34 arr [0] [3]: 52 arr [0] [4]: 63 обр [1] [0]: 40 обр [1] [1]: 20 обр [1] [2]: 96 обр [1] [3]: 43 обр [1] [4]: 97 arr [2] [0]: 82 arr [2] [1]: 53 arr [2] [2]: 64 arr [2] [3]: 12 arr [2] [4]: 45 arr [2] [ 5]: 3