Čo je to pole?
Pole je dátová štruktúra, ktorá postupne ukladá prvok rovnakého dátového typu. Pole C ++ má pevnú veľkosť.
Pole môžete vidieť ako kolekciu premenných podobného dátového typu. Namiesto toho, aby ste každú premennú deklarovali a priradili jej hodnotu jednotlivo, môžete vyhlásiť jednu premennú (pole) a pridať k nej hodnoty rôznych premenných. Každá pridaná hodnota do poľa je identifikovaná indexom.
V tomto výučbe pre C ++ sa dozviete:
- Čo je to pole?
- Prečo potrebujeme polia?
- Deklarujte pole v C ++
- Inicializácia poľa
- Typy polí
- Jednorozmerné pole
- Multidimenzionálne pole
- Dvojrozmerné pole
- Trojrozmerné pole
- Ukazovateľ na pole
- Prístup k hodnotám poľa
- Výhody poľa v C ++
- Nevýhody poľa v C ++
Prečo potrebujeme polia?
Polia sú veľmi dôležité v každom programovacom jazyku. Poskytujú pohodlnejší spôsob ukladania premenných alebo zhromažďovania údajov podobného dátového typu dohromady, namiesto toho, aby ich ukladali osobitne. Ku každej hodnote poľa sa bude pristupovať osobitne.
Deklarujte pole v C ++
Deklarácia poľa v C ++ zahŕňa uvedenie typu, ako aj počtu prvkov, ktoré má pole uložiť. Syntax:
type array-Name [ array-Size ];
Pravidlá pre deklarovanie jednorozmerného poľa v C ++.
- Typ: Typ je typ prvkov, ktoré sa majú uložiť v poli, a musí to byť platný dátový typ C ++.
- Názov poľa: Názov poľa je názov, ktorý sa má priradiť k poli.
- Veľkosť poľa: Veľkosť poľa predstavuje počet prvkov, ktoré sa majú v poli uložiť. Musí to byť celé číslo a väčšie ako 0.
Môžete napríklad vytvoriť pole s názvom age a uložiť vek 5 študentov takto:
int age[5];
Vek poľa uloží 5 celých čísel predstavujúcich vek rôznych študentov.
Inicializácia poľa
Inicializácia poľa je proces priraďovania / ukladania prvkov k poľu. Inicializáciu je možné vykonať v jednom príkaze alebo po jednom. Všimnite si, že prvý prvok v poli je uložený v indexe 0, zatiaľ čo posledný prvok je uložený v indexe n-1, kde n je celkový počet prvkov v poli.
V prípade vekového poľa bude prvý prvok uložený v indexe 0, zatiaľ čo posledný prvok bude uložený v indexe 4.
Poďme pomocou vekového poľa demonštrovať, ako je možné vykonať inicializáciu poľa:
int age[5] = {19, 18, 21, 20, 17};
Celkový počet prvkov v prvku {} nemôže prekročiť hodnotu uvedenú v prvku []. Prvok 19 je na indexe 0, 18 na indexe 1, 21 na indexe 2, 20 na indexe 3 a 17 na indexe 4. Ak nezadáte počet prvkov, ktoré sa majú uložiť v poli v rámci [], pole bude iba dostatočne veľká na to, aby pojala prvky pridané do {}. Napríklad:
int age[] = {19, 18, 21, 20, 17};
Vyššie uvedené vyhlásenie vytvorí úplne rovnaké pole ako predchádzajúce. Jeden prvok môžete tiež priradiť k poli pomocou jeho indexu. Napríklad:
age[3] = 20;
Vyššie uvedený príkaz uloží hodnotu 20 na index 3 poľa s názvom age. To znamená, že 20 bude 4. prvok poľa.
Typy polí
Existujú dva typy polí C ++:
- Jedno dimenzionálne pole
- Multidimenzionálne pole
- Ukazovateľ na pole
Jednorozmerné pole
Toto je pole, v ktorom sú dátové položky usporiadané lineárne iba v jednej dimenzii. Bežne sa nazýva 1-D pole. Syntax:
datatype array-name[size];
- Názov-poľa je názov poľa.
- Veľkosť predstavuje počet položiek, ktoré sa majú uložiť do poľa.
Napríklad:
#includeusing namespace std;int main(){int age[5] = { 19, 18, 21, 20, 17 };for (int x = 0; x < 5; x++){cout < Výkon:
Tu je snímka obrazovky s kódom:
Vysvetlenie kódu:
- Vrátane súboru hlavičiek iostream v našom kóde. Umožní nám to čítať z konzoly a zapisovať do nej.
- Vrátane štandardného menného priestoru, aby bolo možné používať jeho triedy a funkcie bez jeho volania.
- Volanie funkcie main (), do ktorej by mala byť pridaná logika programu.
- Začiatok tela hlavnej () funkcie.
- Deklarovanie poľa s názvom age na uloženie 5 celých čísel. Bolo tiež inicializovaných 5 celých čísel.
- Vytvorte celočíselnú premennú x pomocou slučky for.
- Začiatok tela slučky for.
- Pomocou premennej slučky x môžete iterovať nad hodnotami veku poľa a vytlačiť ich na konzole. „\ N“ je znak nového riadku a po každej iterácii sa vytlačí do nového riadku.
- Koniec tela pre slučku.
- Koniec tela hlavnej () funkcie.
Multidimenzionálne pole
Toto je pole, v ktorom sú dátové položky usporiadané tak, aby vytvorili pole polí. Viacrozmerné pole môže mať ľubovoľný počet rozmerov, ale dvojrozmerné a trojrozmerné polia sú bežné. Syntax:
datatype array-name[d1][d2][d3]… [dn];Názov-poľa je názov poľa, ktoré bude mať n rozmerov. Napríklad:
Dvojrozmerné pole
2D pole ukladá údaje do zoznamu s 1-D poľom. Je to matica s riadkami a stĺpcami. Ak chcete deklarovať 2D pole, použite nasledujúcu syntax:
type array-Name [ x ][ y ];Typ musí byť platný dátový typ C ++. 2D pole považujte za tabuľku, kde x označuje počet riadkov a y označuje počet stĺpcov. To znamená, že každý prvok v 2D poli identifikujete pomocou formulára a [x] [y], kde x je počet riadkov a y počet stĺpcov, do ktorých prvok patrí.
Tu je príklad toho, ako inicializovať 2D pole:
int a[2][3] = {{0, 2, 1} , /* row at index 0 */{4, 3, 7} , /* row at index 1 */};Vo vyššie uvedenom príklade máme 2D pole, ktoré možno považovať za maticu 2x3. K dispozícii sú 2 riadky a 3 stĺpce. K prvku 0 je možné pristupovať ako [0] [1], pretože sa nachádza na križovatke riadkov s indexom 0 a stĺpcov s indexmi 1. K prvku 3 je možné pristupovať ako k [1] [2], pretože je umiestnený na priesečník riadku indexovaného 1 a stĺpca indexovaného 2.
Upozorňujeme, že sme jednoducho pridali zložené zátvorky, aby sme odlíšili rôzne rady prvkov. Inicializácia sa mohla vykonať aj takto:
int a[2][3] = {0, 2, 1, 4, 3, 7};};Nasledujúci príklad v C ++ ukazuje, ako inicializovať a prechádzať po 2D poli:
#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[" < Výkon:
Tu je screenshot vyššie uvedeného kódu:
Vysvetlenie kódu:
- Vrátane súboru hlavičiek iostream v našom kóde. Umožní nám to čítať z konzoly a zapisovať do nej.
- Vrátane štandardného menného priestoru, aby bolo možné používať jeho triedy a funkcie bez jeho volania.
- Volanie funkcie main (), v rámci ktorej by sa mal pridať kód.
- Začiatok tela hlavnej () funkcie.
- Komentár. Kompilátor C ++ to preskočí.
- Deklarovanie 2D poľa 3 riadkov a 2 stĺpcov. Položky boli tiež pridané do poľa.
- Komentár. Kompilátor C ++ to preskočí.
- Vytvorenie premennej i pomocou slučky for. Táto premenná bude iterovať nad indexmi riadkov poľa.
- Vytvorenie premennej j pomocou a pre slučku. Táto premenná bude iterovať nad indexmi stĺpcov poľa.
- Začiatok tela slučiek.
- Vytlačte hodnoty premenných i a j na konzolu do hranatých zátvoriek na konzole.
- Vytlačte hodnotu uloženú v indexe [i] [j] poľa a.
- Koniec tela slučiek.
- Funkcia main () by mala vrátiť celočíselnú hodnotu, ak program funguje dobre.
- Koniec tela hlavnej () funkcie.
Trojrozmerné pole
3D pole je pole polí. Každý prvok v 3D poli je identifikovaný sadou 3 indexov. Pre prístup k prvkom 3D poľa používame tri slučky. Napríklad:
#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";} Výkon:
Tu je snímka obrazovky s kódom:
Vysvetlenie kódu:
- Vrátane súboru hlavičiek iostream v našom kóde. Umožní nám to čítať z konzoly a zapisovať do nej.
- Vrátane štandardného menného priestoru, aby bolo možné používať jeho triedy a funkcie bez jeho volania.
- Volanie funkcie main (), do ktorej by mala byť pridaná logika programu.
- Začiatok tela hlavnej () funkcie.
- Deklarovanie 3D poľa s názvom an o veľkosti 2x3x2. Hodnoty poľa boli tiež inicializované.
- Prístup k položke uloženej v indexe [0] [1] [0] poľa a jej tlač na konzole.
- Prístup k položke uloženej v indexe [0] [1] [1] poľa a jej tlač na konzole.
- Koniec tela hlavnej () funkcie.
Ukazovateľ na pole
Ukazovateľ je premenná, ktorá obsahuje adresu. Okrem použitia ukazovateľa na uloženie adresy premennej ho môžeme použiť na uloženie adresy bunky poľa. Názov poľa neustále odkazuje na jeho prvý prvok. Zvážte vyhlásenie uvedené nižšie:
int age[5];Vek je ukazovateľ na $ age [0], adresa prvého prvku poľa s názvom age. Uvažujme o nasledujúcom príklade:
#includeusing namespace std;int main(){int *john;int age[5] = { 19, 18, 21, 20, 17 };john = age;cout << john << "\n";cout << *john;} Výkon:
Všimnite si, že prvá hodnota vyššie uvedeného výstupu môže vrátiť inú hodnotu v závislosti od adresy priradenej prvému prvku poľa v pamäti vášho počítača.
Tu je snímka obrazovky s kódom:
Vysvetlenie kódu:
- Vrátane súboru hlavičiek iostream v našom kóde. Umožní nám to čítať z konzoly a zapisovať do nej.
- Vrátane štandardného menného priestoru, aby bolo možné používať jeho triedy a funkcie bez jeho volania.
- Volanie funkcie main (), do ktorej by mala byť pridaná logika programu.
- Začiatok tela hlavnej () funkcie.
- Deklarovanie premennej ukazovateľa s názvom * john.
- Deklarovanie celého čísla s názvom age na uloženie 5 celých čísel. Boli tiež inicializované hodnoty celých čísel.
- Priradenie premennej john hodnotu adresy položky uložené v prvom indexe veku poľa.
- Vytlačí sa hodnota premennej john, čo je adresa položky uloženej v prvom indexe veku poľa.
- Vytlačí sa prvá hodnota uložená vo veku poľa.
- Koniec tela hlavnej () funkcie.
Názvy polí možno použiť ako ukazovatele konštanty a platí to aj naopak. To znamená, že máte prístup k hodnote uloženej v indexe 3 veku poľa pomocou * (vek + 3). Napríklad:
#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;} Výkon:
Tu je snímka obrazovky s kódom:
Vysvetlenie kódu:
- Vrátane súboru hlavičiek iostream v našom kóde. Umožní nám to čítať z konzoly a zapisovať do nej.
- Vrátane štandardného menného priestoru, aby bolo možné používať jeho triedy a funkcie bez jeho volania.
- Volanie funkcie main () a začiatku tela funkcie main ().
- Komentár. Kompilátor C ++ to preskočí.
- Deklarovanie poľa s názvom age na uloženie 5 celých čísel.
- Vytvorenie celočíselného ukazovateľa str.
- Priradenie p hodnote adresy prvého prvku veku poľa.
- Komentár. Kompilátor C ++ to preskočí.
- Vytlačte na konzole nejaký text.
- Vytvorte celé číslo x pomocou slučky for. {Označuje začiatok tela cyklu pre slučku.
- Vytlačte hodnoty x v kombinácii s iným textom na konzole.
- Vytlačte hodnoty * (p + x) na konzole.
- Koniec tela pre slučku.
- Vytlačte na konzole nejaký text.
- Vytvorte premennú x pomocou slučky for. {Označuje začiatok tela slučky for.
- Vytlačte hodnoty x od 0 do 4 spolu s iným textom.
- Vytlačte hodnoty * (vek + x).
- Koniec tela slučky for.
- Vráti hodnotu, ak je program úspešne spustený.
- Koniec tela hlavnej () funkcie.
Prístup k hodnotám poľa
K prvkom poľa sa pristupuje pomocou ich príslušných indexov. Index prvku, ku ktorému sa má získať prístup, sa pridá do hranatých zátvoriek [] bezprostredne za názov poľa. Napríklad:
int john = age[2];Vo vyššie uvedenom príklade iba konštatujeme, že Johnov vek je uložený v indexe 2 poľa s názvom age. To znamená, že Johnov vek je treťou hodnotou vo veku poľa. Tu je úplný príklad v C ++, ktorý ukazuje, ako získať a vytlačiť túto hodnotu:
#includeusing namespace std;int main(){int age[5] = { 19, 18, 21, 20, 17 };int john = age[2];cout << "The age of John is:"< Výkon:
Tu je snímka obrazovky s kódom:
Vysvetlenie kódu:
- Vrátane súboru hlavičiek iostream v našom kóde. Umožní nám to čítať z konzoly a zapisovať do nej.
- Vrátane štandardného menného priestoru, aby bolo možné používať jeho triedy a funkcie bez jeho volania.
- Volanie funkcie main (), v rámci ktorej by sa mal pridať kód.
- Začiatok tela hlavnej () funkcie.
- Deklarovanie poľa s názvom age na uloženie 5 celočíselných prvkov.
- Prístup k hodnote uloženej v indexe 2 veku poľa a uloženie jej hodnoty do premennej s názvom john.
- Tlač hodnoty premennej john na konzolu spolu s ďalším textom.
Výhody poľa v C ++
Tu sú výhody a výhody používania poľa v C ++:
- Polemi sa dá ľahko prechádzať.
- Ľahko manipulovateľná s údajmi poľa.
- K prvkom poľa je možné získať prístup náhodne.
- Polia uľahčujú optimalizáciu kódu; teda môžeme vykonať veľa práce s použitím menšieho množstva kódu.
- Ľahko triediť údaje poľa.
Nevýhody poľa v C ++
- Pole má pevnú veľkosť; po inicializácii doň teda nemôžeme pridať nové prvky.
- Pridelenie väčšieho množstva pamäte, ako je potrebné, vedie k plytvaniu pamäťovým priestorom a menšie pridelenie pamäte môže spôsobiť problém.
- Počet prvkov, ktoré sa majú uložiť do poľa, musí byť známy vopred.
Zhrnutie
- Pole je dátová štruktúra, ktorá uchováva prvky rovnakého dátového typu.
- Prvky poľa sa ukladajú postupne.
- Prvky poľa sú označené pomocou svojich príslušných indexov. Prvý prvok je na indexe 0, zatiaľ čo posledný prvok je na indexe n-1, kde je celkový počet prvkov poľa.
- Deklarácia poľa zahŕňa definovanie dátových typov prvkov poľa, ako aj počtu prvkov, ktoré sa majú v poli uložiť.
- Jednorozmerné pole ukladá prvky postupne.
- Dvojrozmerné pole ukladá prvky do riadkov a stĺpcov.
- Trojrozmerné pole je pole polí.
- Prvky je možné pridať do poľa pomocou ich indexov.
- K prvkom poľa sa pristupuje pomocou ich indexov.
- Viacrozmerné pole má viac ako jednu dimenziu.
- Názov poľa smeruje na jeho prvý prvok.
- Polia majú pevnú veľkosť, čo znamená, že po inicializácii nie je možné do poľa pridať nové prvky.