Co je to pole?
Pole je datová struktura, která ukládá prvek stejného datového typu postupně. Pole C ++ má pevnou velikost.
Pole můžete vidět jako kolekci proměnných podobného datového typu. Místo deklarace každé proměnné a jejího přiřazení k hodnotě jednotlivě můžete deklarovat jednu proměnnou (pole) a přidat do ní hodnoty různých proměnných. Každá přidaná hodnota do pole je identifikována indexem.
V tomto výukovém programu C ++ se naučíte:
- Co je to pole?
- Proč potřebujeme pole?
- Deklarovat pole v C ++
- Inicializace pole
- Druhy polí
- Jednorozměrné pole
- Vícerozměrné pole
- Dvourozměrné pole
- Tři -Dimenzionální pole
- Ukazatel na pole
- Přístup k hodnotám pole
- Výhody pole v C ++
- Nevýhody pole v C ++
Proč potřebujeme pole?
Pole jsou velmi důležitá v každém programovacím jazyce. Poskytují pohodlnější způsob ukládání proměnných nebo shromažďování dat podobného datového typu společně, místo aby je ukládali samostatně. Ke každé hodnotě pole bude přistupováno samostatně.
Deklarovat pole v C ++
Deklarace pole v C ++ zahrnuje uvedení typu a počtu prvků, které mají být pole uloženy. Syntax:
type array-Name [ array-Size ];
Pravidla pro deklaraci jednorozměrného pole v C ++.
- Typ: Typ je typ prvků, které mají být uloženy v poli, a musí to být platný datový typ C ++.
- Název pole : Název pole je název, který má být přiřazen poli.
- Velikost pole : Velikost pole je počet prvků, které se mají v poli uložit. Musí to být celé číslo a větší než 0.
Můžete například vytvořit pole s názvem age a uložit věky 5 studentů takto:
int age[5];
Věk pole uloží 5 celých čísel představujících věk různých studentů.
Inicializace pole
Inicializace pole je proces přiřazování / ukládání prvků k poli. Inicializaci lze provést v jednom příkazu nebo jeden po druhém. Všimněte si, že první prvek v poli je uložen v indexu 0, zatímco poslední prvek je uložen v indexu n-1, kde n je celkový počet prvků v poli.
V případě věkového pole bude první prvek uložen v indexu 0, zatímco poslední prvek bude uložen v indexu 4.
Pojďme pomocí věkového pole předvést, jak lze provést inicializaci pole:
int age[5] = {19, 18, 21, 20, 17};
Celkový počet prvků v {} nemůže překročit hodnotu uvedenou v []. Prvek 19 je na indexu 0, 18 na indexu 1, 21 na indexu 2, 20 na indexu 3 a 17 na indexu 4. Pokud neuvedete počet prvků, které mají být uloženy v poli v rámci [], pole bude pouze dostatečně velká, aby pojala prvky přidané do {}. Například:
int age[] = {19, 18, 21, 20, 17};
Výše uvedený příkaz vytvoří přesně stejné pole jako předchozí. Jeden prvek můžete také přiřadit k poli pomocí jeho indexu. Například:
age[3] = 20;
Výše uvedený příkaz uloží hodnotu 20 na index 3 pole s názvem age. To znamená, že 20 budou 4 tý prvek matice.
Druhy polí
Existují dva typy polí C ++:
- Jedno dimenzionální pole
- Vícerozměrné pole
- Ukazatel na pole
Jednorozměrné pole
Toto je pole, ve kterém jsou datové položky uspořádány lineárně pouze v jedné dimenzi. To se běžně nazývá 1-D pole. Syntax:
datatype array-name[size];
- Název-pole je název pole.
- Velikost je počet položek, které mají být uloženy v poli.
Například:
#includeusing namespace std;int main(){int age[5] = { 19, 18, 21, 20, 17 };for (int x = 0; x < 5; x++){cout < Výstup:
Zde je snímek obrazovky s kódem:
Vysvětlení kódu:
- Včetně souboru záhlaví iostream v našem kódu. Umožní nám to číst a zapisovat do konzoly.
- Včetně std namespace, aby bylo možné používat jeho třídy a funkce bez jeho volání.
- Volání funkce main (), do které by měla být přidána logika programu.
- Začátek těla funkce main ().
- Deklarace pole s názvem age pro uložení 5 celých čísel. Bylo také inicializováno 5 celých čísel.
- Vytvořte celočíselnou proměnnou x pomocí smyčky for.
- Začátek těla smyčky for.
- Pomocí proměnné smyčky x můžete iterovat nad hodnotami stáří pole a vytisknout je na konzole. „\ N“ je znak nového řádku a po každé iteraci se vytiskne do nového řádku.
- Konec těla pro smyčku.
- Konec těla funkce main ().
Vícerozměrné pole
Toto je pole, ve kterém jsou datové položky uspořádány tak, aby tvořily pole polí. Vícedimenzionální pole může mít libovolný počet dimenzí, ale dvourozměrná a trojrozměrná pole jsou běžná. Syntax:
datatype array-name[d1][d2][d3]… [dn];Název pole je název pole, které bude mít n rozměrů. Například:
Dvourozměrné pole
2D pole ukládá data do seznamu s 1-D polem. Je to matice s řádky a sloupci. Chcete-li deklarovat 2D pole, použijte následující syntaxi:
type array-Name [ x ][ y ];Typ musí být platný datový typ C ++. Podívejte se na 2D pole jako tabulku, kde x označuje počet řádků, zatímco y označuje počet sloupců. To znamená, že každý prvek v 2D poli identifikujete pomocí formuláře a [x] [y], kde x je počet řádků a y počet sloupců, do kterých prvek patří.
Zde je příklad, jak inicializovat 2D pole:
int a[2][3] = {{0, 2, 1} , /* row at index 0 */{4, 3, 7} , /* row at index 1 */};Ve výše uvedeném příkladu máme 2D pole, které lze považovat za matici 2x3. K dispozici jsou 2 řádky a 3 sloupce. K prvku 0 lze přistupovat jako [0] [1], protože je umístěn na křižovatce řádků indexovaných 0 a sloupců indexovaných 1. K prvku 3 lze přistupovat jako [1] [2], protože je umístěn na průsečík řádků indexovaných 1 a sloupců indexovaných 2.
Všimněte si, že jsme jednoduše přidali složené závorky k odlišení různých řad prvků. Inicializace mohla také proběhnout následovně:
int a[2][3] = {0, 2, 1, 4, 3, 7};};Následující příklad C ++ ukazuje, jak inicializovat a procházet 2D pole:
#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ýstup:
Zde je snímek obrazovky výše uvedeného kódu:
Vysvětlení kódu:
- Včetně souboru záhlaví iostream v našem kódu. Umožní nám to číst a zapisovat do konzoly.
- Včetně std namespace, aby bylo možné používat jeho třídy a funkce bez jeho volání.
- Volání funkce main (), do které by měl být přidán kód.
- Začátek těla funkce main ().
- Komentář. Kompilátor C ++ to přeskočí.
- Deklarace 2D pole 3 řádků a 2 sloupců. Do pole byly také přidány položky.
- Komentář. Kompilátor C ++ to přeskočí.
- Vytvoření proměnné i pomocí smyčky for. Tato proměnná bude iterovat přes indexy řádků pole.
- Vytvoření proměnné j pomocí smyčky pro. Tato proměnná bude iterovat přes indexy sloupců pole.
- Začátek těla smyček.
- Vytiskněte hodnoty proměnných i a j na konzolu uvnitř hranatých závorek na konzole.
- Vytiskněte hodnotu uloženou v indexu [i] [j] pole a.
- Konec těla smyček.
- Funkce main () by měla vrátit celočíselnou hodnotu, pokud program běží dobře.
- Konec těla funkce main ().
Tři -Dimenzionální pole
3D pole je pole polí. Každý prvek v 3D poli je identifikován sadou 3 indexů. Pro přístup k prvkům 3D pole používáme tři pro smyčky. Napří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ýstup:
Zde je snímek obrazovky s kódem:
Vysvětlení kódu:
- Včetně souboru záhlaví iostream v našem kódu. Umožní nám to číst a zapisovat do konzoly.
- Včetně std namespace, aby bylo možné používat jeho třídy a funkce bez jeho volání.
- Volání funkce main (), do které by měla být přidána logika programu.
- Začátek těla funkce main ().
- Deklarace 3D pole s názvem o velikosti 2x3x2. Byly také inicializovány hodnoty pole.
- Přístup k položce uložené v indexu [0] [1] [0] pole a její tisk na konzole.
- Přístup k položce uložené v indexu [0] [1] [1] pole a její tisk na konzole.
- Konec těla funkce main ().
Ukazatel na pole
Ukazatel je proměnná, která obsahuje adresu. Kromě použití ukazatele k uložení adresy proměnné jej můžeme použít k uložení adresy buňky pole. Název pole neustále ukazuje na jeho první prvek. Zvažte níže uvedené prohlášení:
int age[5];Věk je ukazatel na $ věk [0], adresu prvního prvku pole s názvem věk. Zvažte následující příklad:
#includeusing namespace std;int main(){int *john;int age[5] = { 19, 18, 21, 20, 17 };john = age;cout << john << "\n";cout << *john;} Výstup:
Všimněte si, že první hodnota výše uvedeného výstupu může vracet jinou hodnotu v závislosti na adrese přiřazené prvnímu prvku pole v paměti vašeho počítače.
Zde je snímek obrazovky s kódem:
Vysvětlení kódu:
- Včetně souboru záhlaví iostream v našem kódu. Umožní nám to číst a zapisovat do konzoly.
- Včetně std namespace, aby bylo možné používat jeho třídy a funkce bez jeho volání.
- Volání funkce main (), do které by měla být přidána logika programu.
- Začátek těla funkce main ().
- Deklarace proměnné ukazatele s názvem * john.
- Deklarace celočíselného pole s názvem age pro uložení 5 celých čísel. Byly také inicializovány hodnoty celých čísel.
- Přiřazení proměnné john hodnotu adresy položky uložené v prvním indexu stáří pole.
- Tisk hodnoty proměnné john, což je adresa položky uložené v prvním indexu stáří pole.
- Tisk první hodnoty uložené ve stáří pole.
- Konec těla funkce main ().
Názvy polí lze použít jako konstantní ukazatele a platí to i naopak. To znamená, že máte přístup k hodnotě uložené v indexu 3 věku pole pomocí * (věk + 3). Napří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ýstup:
Zde je snímek obrazovky s kódem:
Vysvětlení kódu:
- Včetně souboru záhlaví iostream v našem kódu. Umožní nám to číst a zapisovat do konzoly.
- Včetně std namespace, aby bylo možné používat jeho třídy a funkce bez jeho volání.
- Volání funkce main () a začátek těla funkce main ().
- Komentář. Kompilátor C ++ to přeskočí.
- Deklarace pole s názvem age pro uložení 5 celých čísel.
- Vytvoření celočíselného ukazatele str.
- Přiřazení p hodnotě adresy prvního prvku stáří pole.
- Komentář. Kompilátor C ++ to přeskočí.
- Vytiskněte na konzole nějaký text.
- Vytvořte celé číslo x pomocí smyčky pro. {Označuje začátek těla smyčky for.
- Vytiskněte hodnoty x v kombinaci s nějakým jiným textem na konzole.
- Vytiskněte na konzole hodnoty * (p + x).
- Konec těla pro smyčku.
- Vytiskněte na konzole nějaký text.
- Vytvořte proměnnou x pomocí smyčky pro. {Označuje začátek těla smyčky for.
- Vytiskněte hodnoty x od 0 do 4 spolu s dalším textem.
- Vytiskněte hodnoty * (věk + x).
- Konec těla smyčky for.
- Vrátí hodnotu, pokud program běží úspěšně.
- Konec těla funkce main ().
Přístup k hodnotám pole
K prvkům pole se přistupuje pomocí jejich příslušných indexů. Index prvku, ke kterému se má přistupovat, je přidán do hranatých závorek [] bezprostředně za název pole. Například:
int john = age[2];Ve výše uvedeném příkladu jednoduše konstatujeme, že Johnův věk je uložen na indexu 2 pole s názvem age. To znamená, že Johnův věk je třetí hodnota ve věku pole. Zde je kompletní příklad v C ++, který ukazuje, jak tuto hodnotu získat a vytisknout:
#includeusing namespace std;int main(){int age[5] = { 19, 18, 21, 20, 17 };int john = age[2];cout << "The age of John is:"< Výstup:
Zde je snímek obrazovky s kódem:
Vysvětlení kódu:
- Včetně souboru záhlaví iostream v našem kódu. Umožní nám to číst a zapisovat do konzoly.
- Včetně std namespace, aby bylo možné používat jeho třídy a funkce bez jeho volání.
- Volání funkce main (), do které by měl být přidán kód.
- Začátek těla funkce main ().
- Deklarace pole s názvem age pro uložení 5 celočíselných prvků.
- Přístup k hodnotě uložené v indexu 2 věku pole a uložení její hodnoty do proměnné s názvem john.
- Tisk hodnoty proměnné john na konzoli spolu s dalším textem.
Výhody pole v C ++
Zde jsou výhody / výhody používání Array v C ++:
- Prvky pole lze snadno procházet.
- Snadná manipulace s daty pole.
- K prvkům polí lze přistupovat náhodně.
- Pole usnadňují optimalizaci kódu; proto můžeme vykonat hodně práce s použitím méně kódu.
- Snadné třídění dat pole.
Nevýhody pole v C ++
- Pole má pevnou velikost; proto po inicializaci k němu nemůžeme přidat nové prvky.
- Přidělení více paměti, než je požadavek, vede k plýtvání paměťovým prostorem a menší alokace paměti může způsobit problém.
- Počet prvků, které mají být uloženy v poli, musí být předem znám.
souhrn
- Pole je datová struktura, která ukládá prvky stejného datového typu.
- Prvky pole se ukládají postupně.
- Prvky pole jsou označeny pomocí příslušných indexů. První prvek je na indexu 0, zatímco poslední prvek je na indexu n-1, kde je celkový počet prvků pole.
- Deklarace pole zahrnuje definování datových typů prvků pole a také počet prvků, které mají být v poli uloženy.
- Jednorozměrné pole ukládá prvky postupně.
- Dvourozměrné pole ukládá prvky do řádků a sloupců.
- Trojrozměrné pole je pole polí.
- Prvky lze do pole přidat pomocí jejich indexů.
- K prvkům polí se přistupuje pomocí jejich indexů.
- Vícedimenzionální pole má více než jednu dimenzi.
- Název pole ukazuje na jeho první prvek.
- Pole mají pevnou velikost, což znamená, že po inicializaci nelze do pole přidat nové prvky.