Co to jest tablica?
Tablica to struktura danych, która sekwencyjnie przechowuje element tego samego typu danych. Tablica C ++ ma stały rozmiar.
Tablicę można zobaczyć jako zbiór zmiennych o podobnym typie danych. Zamiast deklarować każdą zmienną i przypisywać jej wartość indywidualnie, można zadeklarować jedną zmienną (tablicę) i dodać do niej wartości różnych zmiennych. Każda wartość dodana do tablicy jest identyfikowana za pomocą indeksu.
W tym samouczku C ++ nauczysz się:
- Co to jest tablica?
- Dlaczego potrzebujemy tablic?
- Zadeklaruj tablicę w C ++
- Inicjalizacja tablicy
- Rodzaje tablic
- Tablica jednowymiarowa
- Tablica wielowymiarowa
- Dwuwymiarowa tablica
- Tablica trójwymiarowa
- Wskaźnik do tablicy
- Dostęp do wartości Array
- Zalety tablicy w C ++
- Wady tablicy w C ++
Dlaczego potrzebujemy tablic?
Tablice są bardzo ważne w każdym języku programowania. Zapewniają wygodniejszy sposób przechowywania razem zmiennych lub zbioru danych o podobnym typie zamiast przechowywania ich oddzielnie. Dostęp do każdej wartości tablicy będzie możliwy osobno.
Zadeklaruj tablicę w C ++
Deklaracja tablicy w C ++ obejmuje podanie typu oraz liczby elementów, które mają być przechowywane przez tablicę. Składnia:
type array-Name [ array-Size ];
Zasady deklarowania tablicy jednowymiarowej w C ++.
- Typ: typ to typ elementów, które mają być przechowywane w tablicy, i musi to być prawidłowy typ danych C ++.
- Nazwa- tablicy: Nazwa-tablicy to nazwa, która ma zostać przypisana do tablicy.
- Array-Size: Tablica-Size to liczba elementów, które mają być przechowywane w tablicy. Musi to być liczba całkowita i większa niż 0.
Na przykład możesz utworzyć tablicę o nazwie wiek i przechowywać wiek 5 uczniów w następujący sposób:
int age[5];
Tablica wiek będzie przechowywać 5 liczb całkowitych reprezentujących wiek różnych uczniów.
Inicjalizacja tablicy
Inicjalizacja tablicy to proces przypisywania / przechowywania elementów do tablicy. Inicjalizację można wykonać pojedynczą instrukcją lub pojedynczo. Zauważ, że pierwszy element tablicy jest przechowywany pod indeksem 0, podczas gdy ostatni element jest przechowywany pod indeksem n-1, gdzie n to całkowita liczba elementów w tablicy.
W przypadku tablicy age pierwszy element będzie przechowywany pod indeksem 0, a ostatni element pod indeksem 4.
Użyjmy tablicy age, aby zademonstrować, jak można wykonać inicjalizację tablicy:
int age[5] = {19, 18, 21, 20, 17};
Całkowita liczba elementów w {} nie może przekroczyć wartości podanej w []. Element 19 znajduje się pod indeksem 0, 18 pod indeksem 1, 21 pod indeksem 2, 20 pod indeksem 3 i 17 pod indeksem 4. Jeśli nie określisz liczby elementów, które mają być przechowywane w tablicy w ciągu [], tablica będzie wystarczająco duży, aby pomieścić elementy dodane w {}. Na przykład:
int age[] = {19, 18, 21, 20, 17};
Powyższa instrukcja utworzy dokładnie taką samą tablicę, jak poprzednia. Możesz również przypisać jeden element do tablicy za pomocą jej indeksu. Na przykład:
age[3] = 20;
Powyższa instrukcja zapisze wartość 20 pod indeksem 3 tablicy o nazwie age. Oznacza to, że 20 Zostanie 4 ty element tablicy.
Rodzaje tablic
Istnieją dwa typy tablic C ++:
- Jednowymiarowa tablica
- Tablica wielowymiarowa
- Wskaźnik do tablicy
Tablica jednowymiarowa
Jest to tablica, w której elementy danych są ułożone liniowo tylko w jednym wymiarze. Jest powszechnie nazywany tablicą 1-D. Składnia:
datatype array-name[size];
- Nazwa tablicy to nazwa tablicy.
- Rozmiar to liczba elementów, które mają być przechowywane w tablicy.
Na przykład:
#includeusing namespace std;int main(){int age[5] = { 19, 18, 21, 20, 17 };for (int x = 0; x < 5; x++){cout < Wynik:
Oto zrzut ekranu kodu:
Objaśnienie kodu:
- Dołączanie pliku nagłówkowego iostream do naszego kodu. Pozwoli nam to czytać i zapisywać na konsoli.
- Włączanie przestrzeni nazw std, aby używać jej klas i funkcji bez wywoływania jej.
- Wywołanie funkcji main (), wewnątrz której należy dodać logikę programu.
- Początek treści funkcji main ().
- Deklarowanie tablicy o nazwie age do przechowywania 5 liczb całkowitych. Zainicjowano również 5 liczb całkowitych.
- Utwórz zmienną całkowitą x przy użyciu pętli for.
- Początek treści pętli for.
- Użycie zmiennej pętli x do iteracji po wartościach wieku tablicy i wydrukowania ich na konsoli. „\ N” jest znakiem nowej linii i jest drukowany w nowej linii po każdej iteracji.
- Koniec treści pętli for.
- Koniec treści funkcji main ().
Tablica wielowymiarowa
Jest to tablica, w której elementy danych są ułożone w celu utworzenia tablicy tablic. Tablica wielowymiarowa może mieć dowolną liczbę wymiarów, ale tablice dwuwymiarowe i trójwymiarowe są powszechne. Składnia:
datatype array-name[d1][d2][d3]… [dn];Nazwa tablicy to nazwa tablicy, która będzie miała n wymiarów. Na przykład:
Dwuwymiarowa tablica
Tablica 2D przechowuje dane na liście z tablicą 1-D. Jest to macierz z wierszami i kolumnami. Aby zadeklarować tablicę 2D, użyj następującej składni:
type array-Name [ x ][ y ];Typ musi być prawidłowym typem danych C ++. Zobacz tablicę 2D jako tabelę, gdzie x oznacza liczbę wierszy, a y oznacza liczbę kolumn. Oznacza to, że identyfikujesz każdy element w tablicy 2D za pomocą postaci a [x] [y], gdzie x to liczba wierszy, a y to liczba kolumn, do których należy element.
Oto przykład, jak zainicjować tablicę 2D:
int a[2][3] = {{0, 2, 1} , /* row at index 0 */{4, 3, 7} , /* row at index 1 */};W powyższym przykładzie mamy tablicę 2D, którą można zobaczyć jako macierz 2x3. Istnieją 2 rzędy i 3 kolumny. Do elementu 0 można uzyskać dostęp jako [0] [1], ponieważ znajduje się on na przecięciu wiersza o indeksie 0 i kolumny o indeksie 1. Dostęp do elementu 3 można uzyskać jako [1] [2], ponieważ znajduje się on w przecięcie wiersza o indeksie 1 i kolumny o indeksie 2.
Zwróć uwagę, że po prostu dodaliśmy nawiasy klamrowe, aby rozróżnić różne rzędy elementów. Inicjalizację można było również wykonać w następujący sposób:
int a[2][3] = {0, 2, 1, 4, 3, 7};};Poniższy przykład w C ++ ilustruje sposób inicjowania i przechodzenia przez tablicę 2D:
#includeusing namespace std;int main(){// a 2x3 arrayint a[3][2] = { {0, 2}, {1, 4}, {3, 7} };// traverse array elementsfor (int i=0; i<3; i++)for (int j=0; j<2; j++){cout << "a[" < Wynik:
Oto zrzut ekranu powyższego kodu:
Objaśnienie kodu:
- Dołączanie pliku nagłówkowego iostream do naszego kodu. Pozwoli nam to czytać i zapisywać na konsoli.
- Włączanie przestrzeni nazw std, aby używać jej klas i funkcji bez wywoływania jej.
- Wywołanie funkcji main (), w ramach której należy dodać kod.
- Początek treści funkcji main ().
- Komentarz. Kompilator C ++ pominie to.
- Deklarowanie tablicy 2D składającej się z 3 wierszy i 2 kolumn. Elementy zostały również dodane do tablicy.
- Komentarz. Kompilator C ++ pominie to.
- Tworzenie zmiennej i przy użyciu pętli for. Ta zmienna będzie iterować po indeksach wierszy tablicy.
- Tworzenie zmiennej j za pomocą pętli for. Ta zmienna będzie iterować po indeksach kolumn tablicy.
- Początek korpusu pętli.
- Wydrukuj wartości zmiennych i i j na konsoli w nawiasach kwadratowych na konsoli.
- Wydrukuj wartość przechowywaną pod indeksem [i] [j] tablicy a.
- Koniec korpusu pętli.
- Funkcja main () powinna zwracać wartość całkowitą, jeśli program działa poprawnie.
- Koniec treści funkcji main ().
Tablica trójwymiarowa
Tablica 3D to tablica tablic. Każdy element w szyku 3D jest identyfikowany przez zestaw 3 indeksów. Aby uzyskać dostęp do elementów tablicy 3D, używamy trzech pętli. Na przykład:
#includeusing namespace std;void main(){int a[2][3][2] = {{{4, 8},{2, 4},{1, 6}}, {{3, 6},{5, 4},{9, 3}}};cout << "a[0][1][0] = " << a[0][1][0] << "\n";cout << "a[0][1][1] = " << a[0][1][1] << "\n";} Wynik:
Oto zrzut ekranu kodu:
Objaśnienie kodu:
- Dołączanie pliku nagłówkowego iostream do naszego kodu. Pozwoli nam to czytać i zapisywać na konsoli.
- Włączanie przestrzeni nazw std, aby używać jej klas i funkcji bez wywoływania jej.
- Wywołanie funkcji main (), wewnątrz której należy dodać logikę programu.
- Początek treści funkcji main ().
- Deklarowanie tablicy 3D o nazwie an o rozmiarze 2x3x2. Wartości tablicy również zostały zainicjowane.
- Uzyskanie dostępu do pozycji przechowywanej pod indeksem [0] [1] [0] tablicy i wydrukowanie jej na konsoli.
- Uzyskanie dostępu do pozycji przechowywanej pod indeksem [0] [1] [1] tablicy i wydrukowanie jej na konsoli.
- Koniec treści funkcji main ().
Wskaźnik do tablicy
Wskaźnik to zmienna przechowująca adres. Oprócz używania wskaźnika do przechowywania adresu zmiennej, możemy go użyć do przechowywania adresu komórki tablicy. Nazwa tablicy stale wskazuje na jej pierwszy element. Rozważ poniższą deklarację:
int age[5];Wiek jest wskaźnikiem do $ age [0], adresu pierwszego elementu tablicy o nazwie wiek. Rozważmy następujący przykład:
#includeusing namespace std;int main(){int *john;int age[5] = { 19, 18, 21, 20, 17 };john = age;cout << john << "\n";cout << *john;} Wynik:
Zauważ, że pierwsza wartość powyższego wyjścia może zwrócić inną wartość w zależności od adresu przypisanego do pierwszego elementu tablicy w pamięci twojego komputera.
Oto zrzut ekranu kodu:
Objaśnienie kodu:
- Dołączanie pliku nagłówkowego iostream do naszego kodu. Pozwoli nam to czytać i zapisywać na konsoli.
- Włączanie przestrzeni nazw std, aby używać jej klas i funkcji bez wywoływania jej.
- Wywołanie funkcji main (), wewnątrz której należy dodać logikę programu.
- Początek treści funkcji main ().
- Deklarowanie zmiennej wskaźnikowej o nazwie * john.
- Deklarowanie tablicy liczb całkowitych o nazwie wiek do przechowywania 5 liczb całkowitych. Zainicjowano również wartości liczb całkowitych.
- Przypisanie zmiennej john wartości adresu elementu przechowywanego w pierwszym indeksie wieku tablicy.
- Wydruk wartości zmiennej john, która jest adresem pozycji przechowywanej w pierwszym indeksie tablicy age.
- Drukowanie pierwszej wartości przechowywanej w tablicy age.
- Koniec treści funkcji main ().
Nazwy tablic mogą być używane jako stałe wskaźniki i odwrotnie jest również prawdą. Oznacza to, że możesz uzyskać dostęp do wartości przechowywanej pod indeksem 3 wieku tablicy za pomocą * (wiek + 3). Na przykład:
#includeusing namespace std;int main() {// an array of 5 elements.int age[5] = { 19, 18, 21, 20, 17 };int *p;p = age;// output array valuescout << "Using pointer: " << endl;for (int x=0; x<5; x++) {cout << "*(p + " << x << ") : ";cout << *(p + x) << endl;}cout << "Using age as address: " << endl;for (int x = 0; x < 5; x++) {cout << "*(age + " << x << ") : ";cout << *(age + x) << endl;}return 0;} Wynik:
Oto zrzut ekranu kodu:
Objaśnienie kodu:
- Dołączanie pliku nagłówkowego iostream do naszego kodu. Pozwoli nam to czytać i zapisywać na konsoli.
- Włączanie przestrzeni nazw std, aby używać jej klas i funkcji bez wywoływania jej.
- Wywołanie funkcji main () i początek treści funkcji main ().
- Komentarz. Kompilator C ++ pominie to.
- Deklarowanie tablicy o nazwie age do przechowywania 5 liczb całkowitych.
- Tworzenie wskaźnika liczb całkowitych p.
- Przypisanie p wartość adresu pierwszego elementu wieku tablicy.
- Komentarz. Kompilator C ++ pominie to.
- Wydrukuj tekst na konsoli.
- Utwórz liczbę całkowitą x za pomocą pętli for. {Oznacza początek treści pętli for.
- Wydrukuj wartości x w połączeniu z innym tekstem na konsoli.
- Wydrukuj wartości * (p + x) na konsoli.
- Koniec treści pętli for.
- Wydrukuj tekst na konsoli.
- Utwórz zmienną x za pomocą pętli for. {Oznacza początek treści pętli for.
- Wydrukuj wartości x od 0 do 4 wraz z innym tekstem.
- Wydrukuj wartości * (wiek + x).
- Koniec treści pętli for.
- Wartość zwracana, jeśli program działa pomyślnie.
- Koniec treści funkcji main ().
Dostęp do wartości Array
Dostęp do elementów tablicy uzyskuje się za pomocą odpowiednich indeksów. Indeks elementu, do którego można uzyskać dostęp, jest dodawany w nawiasach kwadratowych [] bezpośrednio po nazwie tablicy. Na przykład:
int john = age[2];W powyższym przykładzie po prostu stwierdzamy, że wiek jana jest przechowywany pod indeksem 2 tablicy o nazwie wiek. Oznacza to, że wiek jana jest trzecią wartością w tablicy wiek. Oto kompletny przykład C ++, który pokazuje, jak uzyskać dostęp i wydrukować tę wartość:
#includeusing namespace std;int main(){int age[5] = { 19, 18, 21, 20, 17 };int john = age[2];cout << "The age of John is:"< Wynik:
Oto zrzut ekranu kodu:
Objaśnienie kodu:
- Dołączanie pliku nagłówkowego iostream do naszego kodu. Pozwoli nam to czytać i zapisywać na konsoli.
- Włączanie przestrzeni nazw std, aby używać jej klas i funkcji bez wywoływania jej.
- Wywołanie funkcji main (), w ramach której należy dodać kod.
- Początek treści funkcji main ().
- Deklarowanie tablicy o nazwie age do przechowywania 5 elementów całkowitych.
- Dostęp do wartości przechowywanej pod indeksem 2 wieku tablicy i przechowywanie jej wartości w zmiennej o nazwie john.
- Drukowanie wartości zmiennej john na konsoli obok innego tekstu.
Zalety tablicy w C ++
Oto zalety / zalety używania Array w C ++:
- Elementy szyku można łatwo przemierzać.
- Łatwe manipulowanie danymi macierzy.
- Dostęp do elementów tablicy można uzyskać losowo.
- Tablice ułatwiają optymalizację kodu; w związku z tym możemy wykonać dużo pracy przy użyciu mniejszej ilości kodu.
- Łatwe sortowanie danych tablicowych.
Wady tablicy w C ++
- Tablica ma stały rozmiar; stąd nie możemy dodawać do niego nowych elementów po inicjalizacji.
- Przydzielanie większej ilości pamięci niż jest to wymagane prowadzi do marnotrawstwa pamięci, a mniejsza alokacja pamięci może spowodować problem.
- Liczba elementów, które mają być przechowywane w tablicy, musi być wcześniej znana.
Podsumowanie
- Tablica to struktura danych przechowująca elementy tego samego typu danych.
- Elementy tablicy są przechowywane sekwencyjnie.
- Elementy tablicy są oznaczane za pomocą odpowiednich indeksów. Pierwszy element ma indeks 0, a ostatni element ma indeks n-1, gdzie jest całkowitą liczbą elementów tablicy.
- Deklaracja tablicy obejmuje zdefiniowanie typów danych elementów tablicy, a także liczby elementów, które mają być przechowywane w tablicy.
- Jednowymiarowa tablica przechowuje elementy sekwencyjnie.
- Dwuwymiarowa tablica przechowuje elementy w wierszach i kolumnach.
- Trójwymiarowa tablica to tablica tablic.
- Elementy można dodawać do tablicy za pomocą ich indeksów.
- Dostęp do elementów tablicy uzyskuje się za pomocą ich indeksów.
- Tablica wielowymiarowa ma więcej niż jeden wymiar.
- Nazwa tablicy wskazuje na jej pierwszy element.
- Tablice mają stały rozmiar, co oznacza, że nie można dodawać do tablicy nowych elementów po jej zainicjowaniu.