V tomto tutoriále sa naučíme pracovať s poľami. Naučíme sa deklarovať, inicializovať a pristupovať k prvkom poľa v programovaní C ++ pomocou príkladov.
V C ++ je pole premenná, ktorá dokáže uložiť viac hodnôt rovnakého typu. Napríklad,
Predpokladajme, že trieda má 27 študentov, a preto musíme všetkých z nich uložiť. Namiesto vytvorenia 27 samostatných premenných môžeme jednoducho vytvoriť pole:
double grade(27);
Tu je známka pole, ktoré pojme maximálne 27 prvkov doubletypu.
V C ++ nemožno po vyhlásení zmeniť veľkosť a typ polí.
Deklarácia poľa C ++
dataType arrayName(arraySize);
Napríklad,
int x(6);
Tu,
int- typ prvku, ktorý sa má uložiť- x - názov poľa
6- veľkosť poľa
Prístup k prvkom v poli C ++
V C ++ je každý prvok v poli priradený k číslu. Číslo sa nazýva index poľa. Pomocou týchto indexov môžeme získať prístup k prvkom poľa.
// syntax to access array elements array(index);
Zvážte pole x, ktoré sme videli vyššie.
Prvky poľa v C ++
Niekoľko vecí, ktoré by ste si mali pamätať:
- Indexy poľa začínajú na
0. Význam x (0) je prvý prvok uložený v indexe0. - Ak je veľkosť poľa veľká
n, posledný prvok sa uloží do indexu(n-1). V tomto príklade je x (5) posledným prvkom. - Prvky poľa majú po sebe nasledujúce adresy. Predpokladajme napríklad, že začiatočná adresa
x(0)je 2120d. Potom bude adresa nasledujúceho prvkux(1)2124d, adresax(2)bude 2128d atď.
Tu sa veľkosť každého prvku zvýši o 4. Je to preto, lebo veľkosťintje 4 bajty.
Inicializácia poľa C ++
V C ++ je možné počas deklarácie inicializovať pole. Napríklad,
// declare and initialize and array int x(6) = (19, 10, 8, 17, 9, 15);
Prvky poľa C ++ a ich údaje
Ďalšia metóda na inicializáciu poľa počas deklarácie:
// declare and initialize an array int x() = (19, 10, 8, 17, 9, 15);
Tu sme nespomenuli veľkosť poľa. V takýchto prípadoch kompilátor automaticky počíta veľkosť.
Pole C ++ s prázdnymi členmi
Ak má v C ++ veľkosť poľa n, môžeme do poľa uložiť až n počet prvkov. Čo sa však stane, ak uložíme menej ako n počtu prvkov.
Napríklad,
// store only 3 elements in the array int x(6) = (19, 10, 8);
Tu má pole x veľkosť 6. Inicializovali sme ho však iba s 3 prvkami.
V takýchto prípadoch kompilátor priradí náhodným hodnotám zvyšné miesta. Táto náhodná hodnota je často jednoduchá 0.
Prázdnym členom poľa sa automaticky priradí hodnota 0
Ako vložiť a vytlačiť prvky poľa?
int mark(5) = (19, 10, 8, 17, 9) // change 4th element to 9 mark(3) = 9; // take input from the user // store the value at third position cin>> mark(2); // take input from the user // insert at ith position cin>> mark(i-1); // print first element of the array cout <> mark(i-1);
Príklad 1: Zobrazenie prvkov poľa
#include using namespace std; int main() ( int numbers(5) = (7, 5, 6, 12, 35); cout << "The numbers are: "; // Printing array elements // using range based for loop for (const int &n : numbers) ( cout << n << " "; ) cout << "The numbers are: "; // Printing array elements // using traditional for loop for (int i = 0; i < 5; ++i) ( cout << numbers(i) << " "; ) return 0; )
Výkon
Čísla sú: 7 5 6 12 35 Čísla sú: 7 5 6 12 35
Tu sme použili forslučku na iteráciu od i = 0do i = 4. V každej iterácii máme vytlačené numbers(i).
Na vytlačenie prvkov poľa sme opäť použili rozsah založený na cykle. Ak sa chcete dozvedieť viac informácií o tejto slučke, skontrolujte slučku C ++ Ranged.
Poznámka: V našej slučke založenej na rozsahu sme const int &nnamiesto int ndeklarácie rozsahu použili kód . Je const int &nto však výhodnejšie, pretože:
- Použitie
int njednoducho skopíruje prvky poľa do premennej n počas každej iterácie. To nie je efektívne z hľadiska pamäte.
& n však používa adresu pamäte prvkov poľa na prístup k svojim údajom bez toho, aby ich skopíroval do novej premennej. To je pamäťovo efektívne. - Jednoducho tlačíme prvky poľa, nie ich upravujeme. Preto používame,
constaby sme náhodne nezmenili hodnoty poľa.
Príklad 2: Vezmite vstupy od používateľa a uložte ich do poľa
#include using namespace std; int main() ( int numbers(5); cout << "Enter 5 numbers: " << endl; // store input from user to array for (int i = 0; i > numbers(i); ) cout << "The numbers are: "; // print array elements for (int n = 0; n < 5; ++n) ( cout << numbers(n) << " "; ) return 0; )
Výkon
Enter 5 numbers: 11 12 13 14 15 The numbers are: 11 12 13 14 15
Once again, we have used a for loop to iterate from i = 0 to i = 4. In each iteration, we took an input from the user and stored it in numbers(i).
Then, we used another for loop to print all the array elements.
Example 3: Display Sum and Average of Array Elements Using for Loop
#include using namespace std; int main() ( // initialize an array without specifying size double numbers() = (7, 5, 6, 12, 35, 27); double sum = 0; double count = 0; double average; cout << "The numbers are: "; // print array elements // use of range-based for loop for (const double &n : numbers) ( cout << n << " "; // calculate the sum sum += n; // count the no. of array elements ++count; ) // print the sum cout << "Their Sum = " << sum << endl; // find the average average = sum / count; cout << "Their Average = " << average << endl; return 0; )
Output
The numbers are: 7 5 6 12 35 27 Their Sum = 92 Their Average = 15.3333
In this program:
- We have initialized a double array named numbers but without specifying its size. We also declared three double variables sum, count, and average.
Here,sum =0andcount = 0. - Then we used a range based
forloop to print the array elements. In each iteration of the loop, we add the current array element to sum. - Hodnotu count tiež zvyšujeme o
1v každej iterácii, aby sme na konci cyklu for mohli získať veľkosť poľa. - Po vytlačení všetkých prvkov vytlačíme súčet a priemer všetkých čísel. Priemer čísel je daný
average = sum / count;
Poznámka:for Namiesto normálnej forslučky sme použili slučku na diaľku .
Normálna forslučka vyžaduje, aby sme určili počet iterácií, ktorý je daný veľkosťou poľa.
Diaľková forslučka ale také špecifikácie nevyžaduje.
C ++ pole mimo hraníc
Ak deklarujeme pole o veľkosti 10, potom pole bude obsahovať prvky od indexu 0 do 9.
Ak sa však pokúsime získať prístup k prvku na indexe 10 alebo viac ako 10, bude to mať za následok nedefinované správanie.








