Cześć i witaj.
W tym wykładzie chcę mówić o tablicach wielowymiarowych.
Aż do tego momentu, jeśli tak myśląc o tablicy, właśnie powiedziałeś,
że tablica to zmienna może przechowywać wiele typów danych.
To może być bardziej skomplikowane.
Możesz mieć w zasadzie wiele wymiary tablicy.
Więc jeśli masz tylko tablicę liniową co do tej pory omawialiśmy, nazywa się
to pojedynczym wymiarem.
Wiemy, że to singiel wymiar, ponieważ ma tylko
jeden nawias o jednym rozmiarze.
Język c zezwala na tablice dowolnego wymiaru podlega karze grzywny.
Więc to jest myślenie jak a tablica zagnieżdżona, tablica tablicy.
A więc dwuwymiarowe tablice są najbardziej powszechne.
Ale faktycznie możesz to zrobić tablice trójwymiarowe,
tablice czterowymiarowe, tablice pięciowymiarowe, ale nie ma wielu przypadków
użycia dla 3 4 i 5.
Naprawdę, albo to zrobisz mają jednowymiarową tablicę, której
używasz w swoim programie lub dwuwymiarowa tablica.
tablice dwuwymiarowe są powszechne ponieważ zasadniczo
reprezentują wiersze i kolumny w arkuszu kalkulacyjnym, w ten
sposób możesz to wizualizować, macierz lub tabelę.
To jest dwuwymiarowa tablica, masz wiersze i masz kolumny.
Możesz więc przechowywać więcej danych niż
jednowymiarowa tablica przez określenie rozmiarów.
Ale jest to bardzo przydatne ponieważ wygląda jak matryca.
I są takie aplikacje możesz napisać, że ma w szczególności tę
koncepcję macierzy zastosowanie matematyczne byłoby tutaj
najbardziej odpowiednie.
Ale możesz użyć do zrobienia dwuwymiarowego tablice dla wielu różnych rzeczy.
Jednym z przykładów jest macierz.
Ale znowu wizualizuj to jako stół.
Tablice dwuwymiarowe są zadeklarowane w taki sam
sposób, jak tablica jednowymiarowa.
Jedyną różnicą jesteś teraz mają inny zestaw nawiasów.
Więc w tym przykładzie deklarujemy tablica o nazwie matrix typu int,
która ma 4 wiersze i 5 kolumn.
Oznacza to, że możesz przechowywać 20 elementów wewnątrz tej dwuwymiarowej tablicy.
Więc powinieneś wiedzieć, jak każdy wymiar jest określany za
pomocą własnej pary nawiasów kwadratowych.
w ten sposób możesz łatwo zauważyć ile wymiarów ma tablica.
Gdybyś miał tam 3 nawiasy, to byłaby tablicą trójwymiarową.
Jeśli masz 4, będzie to cztery.
Ten ma 2, więc jest 2.
Aż do wcześniejszego wykłady miały tylko jeden, więc wiedzieliśmy, że jest
to jeden wymiar.
Więc spójrz na nawiasy, zwróć na to uwagę.
Ponownie 4 rzędy, 5 kolumn, łącznie 20 elementów.
Aby zainicjować dwuwymiarową tablicę, zostanie zainicjowany w taki sam sposób
jak jednowymiarowy tablica, ten sam typ składni, po prostu
dodasz więcej.
Więc kiedy wymieniasz elementy podczas inicjalizacji wartości będą
wyświetlane według wierszy.
A tutaj różnica jest taka kiedy
umieścisz początkowe wartości dla każdego wiersza, zrobisz to między nawiasami klamrowymi, nawiasami klamrowymi,
a następnie zamkniesz wszystkie rzędy między nawiasami klamrowymi.
Więc to będzie wyglądać coś takiego.
Jeśli utworzymy tablicę liczb, który ma 2 wymiary, 3 rzędy
i 4 kolumny i chcemy zainicjuj go, wszystko, co musisz zrobić,
to umieścić w nawiasach klamrowych plik całą tablicę, a następnie dodaj wewnętrzne zagnieżdżone nawiasy
klamrowe dla każdego wiersza.
Więc tutaj inicjalizujemy wartości 0 pod-0 do 10, 0 pod-1 do 20, 0 pod-2 do 30
i 0 pod-3 do 40.
I w ten sposób uzyskujesz dostęp tablice wielowymiarowe.
Dostęp do nich uzyskujesz za pomocą wiersz w kolumnie.
Musisz tylko pamiętać że jest oparty na 0.
Więc lewa górna ręka, która będzie wiersz 1, kolumna 1 będzie miała wartość 00, a to
będzie równe 10.
Wiersz 1 kolumna 2 będzie równa się 20, ale można
uzyskać do niej dostęp jako liczby 0 pod-1.
Ponieważ pierwsza tablica zawiera 3 wiersze, do których masz dostęp, to numer określony jako numer wiersza i
następnie numer kolumny jest kolejną specyfikacją dotyczącą
dostępu do tablicy.
Ale indywidualizacja jest ładna proste, po prostu
oddziel rzeczy komentarzami w nawiasach.
A uzyskując do nich dostęp, miałbyś dostęp to tak samo, jak uzyskujesz dostęp do zwykłej tablicy,
z wyjątkiem tego, że teraz uzyskujesz dostęp to pojęcie wiersza w kolumnie.
Więc użycie wewnętrznych par nawiasy klamrowe są w rzeczywistości opcjonalne, ale należy ich
używać ze względu na czytelność.
Jeśli nie dostarczyłeś tych szelek, możesz po
prostu podać tylko 10 20 30 40 15 25 35 po kolei, ale bardzo trudno jest wyobrazić
sobie, co inicjalizujesz.
Jako programista, czytelność jest bardzo, bardzo ważne, ponieważ zwiększa
jakość kodu łatwiej jest utrzymać kod.
Kiedy patrzę na to tutaj, Mogę łatwo zidentyfikować, zwłaszcza
po komentarzach, kim jestem inicjalizacja do, jakie wartości i jakie wiersze
mają zostać zainicjalizowane.
Gdybym miał to jako pojedynczą linię tylko kolejne numery, gubiłbym
się naprawdę szybko.
Więc chociaż nawiasy wewnętrzne nie są konieczne, użyj ich.
Podobnie jak w przypadku jednowymiarowej tablicy, nie jest wymagane
inicjowanie całej tablicy.
Możesz po prostu zainicjować określone obszary.
Więc w tym przykładzie jesteśmy tworzenie dwuwymiarowej tablicy z
4 wierszami i 5 kolumnami.
Inicjujemy tylko pierwsze 3 elementy każdego rzędu.
Więc wiersz 1, kolumna 1 to 10, wiersz 1 kolumna 2 to 5, a wiersz 1 kolumna 3 to minus
3, i to samo dla drugiej
kolumny i tak dalej 900 32 31 008.
Dla tych, których nie ustawiliśmy czwarta i piąta wartość
w każdym wierszu, to faktycznie idą mają być ustawione na 0 automatycznie, ponieważ
je pominęliśmy.
A w tym przypadku faktycznie Muszę zapewnić
kręcone szelki, wewnętrzne.
Ponieważ tutaj, gdybyśmy to zrobili to,
inicjalizacja byłaby schrzaniona.
Bo jeśli nie miałeś kręcone szelki, po prostu
robiłoby to po kolei.
Więc co by się stało,
jest to faktycznie zainicjowałoby pierwsze 12 elementów.
Więc zainicjowałoby wszystkie pliki elementy w pierwszym rzędzie, wszystkie elementy w drugim
rzędzie, a następnie pierwsze 2 elementy w trzecim rzędzie,
a następnie pozostałe elementy w trzecim rzędzie reszta elementów w
czwartym rzędzie miałaby wartość 0.
Ponownie, jest to dwuwymiarowe tablica 4 wierszy i 5 kolumn.
Po prostu robiłoby to po kolei.
Więc nie zapomnij o szelkach, jeśli jesteś, jeśli
chcesz tylko określić pewne elementy inicjalizacji.
Ty też możesz to zrobić wyznaczone inicjatory.
Pamiętaj, to jest koncepcja C99.
Jest to opcjonalne w C11, gdzie możesz
określić określone indeksy do zainicjowania.
Możesz więc używać indeksów dolnych w lista inicjalizacyjna, tak jak
w jednowymiarowej tablicy, jeśli chcesz aby wykonać wyznaczony inicjator, po prostu
zrobiłbyś coś takiego.
Więc tutaj deklarujemy naszą macierz tablica 4 wierszy i 3 kolumn, ale tak naprawdę to określamy
że 0 0 równa się 1, 1 1 równa się 5 i 2
2 równa się 9.
Więc kiedy znowu powiemy 2 2, co mówimy o wierszu 2, który w rzeczywistości jest wierszem
3, ponieważ zaczynamy od 0, kolumna 2, która tak naprawdę jest kolumną 3.
Ponownie wizualizuj to jako tabelę lub arkusz kalkulacyjny.
Rozpoczyna się dostęp do elementów w lewym górnym rogu.
Ale jeśli rozumiesz, że 4 reprezentuje wiersze, a 3 reprezentuje
kolumny, to jest po tym całkiem intuicyjny.
Więc to, co to robi, to jest to inicjalizacja 3 wskazanych
elementów macierzy do określonych wartości.
Ale co powinieneś uwaga tutaj jest składnia.
Wszystkie nieokreślone wartości tutaj domyślnie będą wynosić 0.
Więc to tylko się dzieje aby zainicjować 3 wartości.
Każdy zestaw wartości, które Ty do inicjalizacji będą elementami
w wierszu między nawiasami klamrowymi.
A potem cała inicjalizacja przechodzi między kolejną parą szelek.
Więc widzisz, że mamy nawiasy klamrowe na zewnętrznych, tak jak
normalna inicjalizacja a następnie mamy nawiasy, aby uzyskać
dostęp do tablicy wewnątrz.
A potem mamy przecinki do oddziel każdy wiersz, a każdy zestaw wartości
wierszy jest oddzielany od następnego zestawu przecinkiem.
Więc wartości są oddzielone a także indeksy wierszy.
Teraz tylko dlatego, że to powiedzieliśmy mamy 2 wymiary i
już o tym rozmawialiśmy; możesz w rzeczywistości mają wiele innych wymiarów.
Wszystko o czym rozmawiałem 2 wymiary dotyczą również 3
wymiarów 4 wymiarów 5 wymiarów.
Więc jeśli chcesz zadeklarować Trójwymiarowa
tablica, zrobiłbyś to za pomocą 3 nawiasów kwadratowych.
Oto tablica o nazwie box typu int 10 20 i 30.
Możesz użyć pliku trójwymiarowa
tablica może, gdybyś przechowywał jakieś wartości xyz, prawdopodobnie nie będziesz musiał tego robić.
Trójwymiarowe tablice i w górę są naprawdę rzadkie.
Podsumowując, możesz wizualizować plik jednowymiarowa tablica jako
wiersz danych, jednorzędowa, dwuwymiarowa tablica jako tabela macierz
lub arkusz kalkulacyjny, w układzie trójwymiarowym array, możesz wizualizować jako stos
tabel danych, czyli stos tabel.
Jeśli potrzebujesz tak dużej ilości danych, dostęp do niego będzie
naprawdę trudny i prawdopodobnie mylący.
I każdy, kto to utrzymuje program dla tablicy
trójwymiarowej lub wyższej, prawdopodobnie działa zgubić się, próbując
dowiedzieć się, co się dzieje, ale możesz to zrobić ponownie i jeśli kiedykolwiek
będziesz musiał przejść przez którykolwiek z nich jedna, dwie, trójwymiarowe tablice,
prawdopodobnie użyjesz pętli.
A im więcej masz wymiarów w pętli, tym więcej będziesz mieć
zagnieżdżonych pętli.
Więc jeśli chcesz przetworzyć plik trójwymiarowa tablica, będziesz
mieć 3 zagnieżdżone pętle.
A jeśli chcesz przetworzyć plik czterowymiarowa tablica, będziesz
mieć 4 zagnieżdżone pętle.
A więc jeśli chodzi o inicjalizację tablicy to jest większe niż 2 wymiary, znowu
zastosujesz ten sam rodzaj rzeczy, po prostu
trochę go przedłużysz.
A więc tablica trójwymiarowa będzie miał
3 poziomy zagnieżdżonych nawiasów z poziomem wewnętrznym zawierający zestaw wartości inicjujących
dla każdego wiersza, więc tak wygląda jak coś takiego.
Tutaj mamy trójwymiarowy tablica, 2 3 i 4, zasadniczo stos
tabel danych.
I pierwszy blok z 3 rzędami, mamy
zamiar zainicjować i drugi blok 3 wierszy mamy zamiar zainicjować.
Więc to, co to mówi, jest znowu pierwszy i drugi blok, ponieważ nie
zainicjowaliśmy trzeci i czwarty blok, tylko pierwszy
i drugi.
Mamy więc 4 bloki i Ciebie może myśleć o każdym bloku jako
o stosie tabel danych blok mający wiersze i kolumny.
Tak więc będzie pierwszy blok inicjalizuję tylko pierwsze 3 wiersze, czyli wszystko, co
mamy, to 3 wiersze.
A potem idzie drugi blok aby zainicjować następne 3 wiersze, ale trzeci i
czwarty blok nie zostaną zainicjalizowane.
Jeśli chcesz zainicjować trzeci i
czwarty blok, miałbyś więcej wewnętrznych szelek, nawiasy klamrowe i tak dalej.
To samo dotyczy jednak te, których nie zainicjujesz,
zostaną zainicjalizowane na 0.
Ale znowu możesz zobaczyć, jak to zrobić robi się to bardzo
żmudne i trudne do naśladowania.
Kiedy chcesz przetworzyć elementy w tablicy wymiarowej, wspomniałem,
będziesz używać zagnieżdżonych pętli.
Znowu będzie korespondować bezpośrednio do liczby wymiarów.
I każda pętla będzie iteruj po jednym wymiarze tablicy.
Więc to będzie wyglądać coś takiego.
To jest przykład pliku trójwymiarowa tablica.
Masz zewnętrzną pętlę i wtedy masz 2 wewnętrzne pętle.
Zewnętrzną pętlą będzie pierwsza zewnętrzna tablica, więc zewnętrzna pętla w zasadzie przez nią przechodzi rzędy,
drugi przejdzie przez kolumny, a trzeci
jeden przejdzie przez bloki.
Ponownie, na co powinieneś zwrócić uwagę jest wow, to robi się
naprawdę owłosione i bardzo nudne, bardzo szybko.
Dlatego staraj się unikać trójwymiarowości czterowymiarowe tablice i nawet nie widzę
zbyt wielu zastosowań sprawy, jeden i dwa to naprawdę
wszystko, czego będziesz używał.
Ale zrozum wielowymiarowość tablice są możliwością w c, sposobem na przechowywanie większej ilości danych i uzyskiwanie do
nich dostępu ta sama nazwa z wieloma elementami danych. Dziękuję Ci.