Zalecane, 2024

Wybór Redakcji

Różnica między jednowymiarową (1D) i dwuwymiarową (2D) macierzą

Tablica jest zbiorem zmiennych o podobnych typach danych i jest określana wspólną nazwą. Określony element w tablicy jest dostępny dla określonego indeksu tej tablicy. Tablice w Javie działają inaczej niż C ++. Głównym tematem naszej dyskusji jest różnica między tablicą jednowymiarową i dwuwymiarową. Jednowymiarowa tablica jest listą zmiennych o tym samym typie danych, podczas gdy dwuwymiarowa tablica to "tablica tablic" o podobnych typach danych. C ++ nie ma ograniczonego sprawdzania tablic, podczas gdy Java ma ścisłe sprawdzanie na tablicach.

Zacznijmy zatem od różnic między tablicą wymiarów jedno-wymiarowych i dwuwymiarowych oraz tabelą porównawczą.

Wykres porównania:

Podstawa do porównaniaJednowymiarowyDwuwymiarowy
Podstawowy
Przechowuj pojedynczą listę elementów o podobnym typie danych.Zapisz "listę list" lub "tablicę tablic" lub "tablicę jednowymiarowych tablic".
Deklaracja/ * deklaracja w C ++
typ nazwa_zmiennej [rozmiar]; * /
/ * deklaracja w Javie
type nazwa_zmiennej [];
variable_name = nowy typ [rozmiar]; * /
/ * deklaracja w C ++
typ nazwa_zmiennej [rozmiar1] [rozmiar2]; * /
/ * deklaracja w Javie
type nazwa_zmiennej = nowa wartość int [rozmiar1] [rozmiar2]; * /
Alternatywne oświadczenie/ * W Javie
int [] a = new int [10]; * /
/ * W Javie
int [] [] a = new int [10] [20]; * /
Całkowity rozmiar w bajtachŁączna liczba bajtów = sizeof (typ danych zmiennej tablicowej) * wielkość tablicy.Całkowita liczba bajtów = sizeof (typ danych zmiennej tablicowej) * rozmiar pierwszego indeksu * rozmiar drugiego indeksu.
Odbieranie parametruMoże być odbierany w formie wskaźnika, tablicy wielkości lub niezarządzonej tablicy.Otrzymujący parametry musi zdefiniować najbardziej prawy wymiar tablicy.
WymiaryJednowymiarowy.Dwuwymiarowy.

Definicja jednowymiarowej macierzy (tablica 1-D)

Jednowymiarowa lub jednowymiarowa tablica jest uważana za "listę zmiennych podobnych typów danych", a każda zmienna może być łatwo dostępna poprzez podanie jej indeksu w nawiasach kwadratowych poprzedzonych nazwą tej tablicy.

W C ++ deklaracja zmiennej tablicowej o rozmiarze wystarcza do przydzielenia miejsca w pamięci. W Javie osiąga się to w dwóch etapach. Najpierw musisz zadeklarować zmienną żądanego typu. Po drugie, musisz przydzielić pamięć, aby utrzymać tablicę za pomocą "new" i przypisać ją do zadeklarowanej zmiennej tablicowej. W związku z tym tablice są przydzielane dynamicznie w Javie.

Porozmawiajmy w kontekście C ++

 // deklaracja w C ++ typ nazwa_zmiennej [rozmiar]; 

Tutaj typ deklaruje typ danych zmiennej tablicowej, a size określa numer elementu, który będzie przechowywany w tablicy.

Na przykład, jeśli chcemy zadeklarować tablicę, która będzie zawierała saldo każdego miesiąca w roku.

 // przykład int month_balance [12]; 

Month_balance to zmienna tablicowa, która będzie zawierać 12 liczb całkowitych, które będą reprezentować saldo każdego miesiąca. Teraz, jeśli chcemy uzyskać dostęp do salda w miesiącu "Kwiecień", musieliśmy po prostu wspomnieć o nazwie zmiennej, po której następuje nawias kwadratowy zawierający wartość indeksu za kwiecień, czyli "month_balance [3]". Ale ponieważ "kwiecień" jest czwartym miesiącem roku, ale wspomnieliśmy "[3]", ponieważ wszystkie tablice mają 0 jako indeks pierwszego elementu.

W Javie można to zrobić jako

 // deklaracja w typie Java nazwa_zmiennej []; variable_name = nowy typ [rozmiar]; 

Tutaj, na początku zadeklarowaliśmy zmienną tablicową z jej typem, a następnie przydzieliliśmy jej pamięć za pomocą "new" i przypisz "new" do zadeklarowanej zmiennej tablicowej. Weźmy powyższy przykład, jeśli chcemy zadeklarować tablicę, która będzie zawierała saldo w każdym miesiącu roku.

 // przykład int month_balance []; month_balance = new int [12]; 

Tutaj, "new" przydziela pamięć do zmiennej tablicowej "month_balance", więc teraz, mont_balance będzie teraz przechowywać pamięć dla 12 wartości całkowitych.

Tablice można zainicjować, gdy zostaną zadeklarowane. Inicjator tablicowy to lista wartości rozdzielonych przecinkami, otoczonych nawiasami klamrowymi.
//przykład

 int month_balance = {100, 500, 200, 750, 850, 250, 630, 248, 790, 360, 450, 180}; 

Definicja macierzy dwuwymiarowej (tablica 2-D)

Zarówno C ++, jak i Java obsługują tablice wielowymiarowe. Jedną z najprostszych form wielowymiarowej tablicy jest dwuwymiarowa tablica lub tablica 2-D. Dwuwymiarową tablicę można uznać za "tablicę tablic" lub "tablicę jednowymiarowych tablic". Aby zadeklarować dwuwymiarową zmienną tablicową, musimy podać nazwę tablicy, po której następują dwa nawiasy kwadratowe, gdzie drugi indeks to drugi zestaw nawiasów kwadratowych.

Tablica dwuwymiarowa jest przechowywana w postaci macierzy kolumny wiersza, gdzie pierwszy indeks wskazuje wiersz, a drugi indeks wskazuje kolumnę. Drugi lub prawy indeks tablicy zmienia się bardzo szybko w porównaniu do pierwszego lub lewego indeksu podczas uzyskiwania dostępu do elementów tablicy.

W C ++ dwuwymiarowa tablica jest zadeklarowana jako;

 // deklaracja w C ++ typ nazwa_zmiennej [rozmiar1] [rozmiar2]; 

Na przykład chcemy przechowywać saldo co 30 dni w każdym miesiącu roku, w tablicy 2-D.

 // example int month_balance [12] [30]; 

W Javie dwuwymiarowa tablica jest uzyskiwana przez

 // deklaracja w typie Java nazwa_zmiennej = nowa int [rozmiar1] [rozmiar2]; // przykład int month_balance = new int [12] [30]; 

Ponieważ nie możemy przekazać całej tablicy jako parametru do funkcji, przekazywany jest wskaźnik do pierwszego elementu tablicy. Argument otrzymujący dwuwymiarową tablicę musi zdefiniować, że jest to najbardziej prawy wymiar. Prawy wymiar jest wymagany, ponieważ kompilator go potrzebuje, aby potwierdzić długość każdego wiersza, jeśli chce poprawnie indeksować tablicę. Jeśli nie wymieniono indeksu najbardziej po prawej stronie, kompilator nie może określić miejsca rozpoczęcia następnego wiersza.

 // przykład w Javie void receiveing_funct (int a [] [10]) {. . . } 

Gdy pamięć jest dynamicznie przydzielana do dwuwymiarowej tablicy w Javie, określany jest najbardziej na lewo indeks, a pozostałe wymiary mogą być przydzielane osobno, tj. Wszystkie wiersze tablicy mogą nie mieć tego samego rozmiaru.

 // przykład w Javie int month_balance = new int [12] []; month_balance [0] = new int [31]; month_balance [1] = new int [28]; month_balance [2] = new int [31]; month_balance [3] = new int [30]; month_balance [4] = new int [31]; month_balance [5] = new int [30]; month_balance [6] = new int [31]; month_balance [7] = new int [30]; month_balance [8] = new int [31]; month_balance [9] = new int [30]; month_balance [10] = new int [31]; month_balance [11] = new int [30]; month_balance [12] = new int [31]; 

Ale nie ma takiej korzyści.

Kluczowe różnice między jednowymiarowymi i dwuwymiarowymi tablicami

  1. Jednowymiarowa tablica jest listą, której elementy mają podobny typ danych. Z drugiej strony, tablica dwuwymiarowa jest listą, której elementami są tablice podobnych typów danych.
  2. W C ++, gdy tablica jednowymiarowa jest odbierana przez parametr funkcji odbierającej, nie jest konieczne podawanie wielkości tablicy, ponieważ kompilator rozumie, że tablica typu (wymieniony typ danych wraz z parametrem) ma pewną długość należy odebrać. W dwuwymiarowej tablicy należy podać drugi lub prawy indeks, ponieważ kompilator musi wiedzieć, gdzie zaczyna się jeden wiersz i nowy wiersz.
  3. W C ++ jednowymiarowa tablica jest przechowywana w ciągłej lokalizacji pamięci w indeksowanej kolejności, podczas gdy dwuwymiarowa tablica jest również przechowywana w sąsiedniej lokalizacji pamięci, ale ponieważ istnieje wiele wierszy w dwuwymiarowej tablicy, przechowywanie w pierwszym rzędzie następuje drugi i trzeci itd.

Uwaga:

Przekazywanie zarówno jednowymiarowej tablicy jak i dwuwymiarowej tablicy do funkcji jest podobne, tzn. Oba są przekazywane tylko przez nazwę tablicy

 // przykład passing_funt (name_of_array); 

Wniosek:

W jednowymiarowej i dwuwymiarowej tablicy indeks odgrywa bardzo ważną rolę, ponieważ jest jedyną rzeczą, która wyraźnie identyfikuje element w tablicy. Zarówno jednowymiarową, jak i dwuwymiarową tablicę można zainicjować w momencie deklaracji.

Top