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 double
typu.
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.

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ťint
je 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);

Ď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
.

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 for
slučku na iteráciu od i = 0
do 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 &n
namiesto int n
deklarácie rozsahu použili kód . Je const int &n
to však výhodnejšie, pretože:
- Použitie
int n
jednoducho 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,
const
aby 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 =0
andcount = 0
. - Then we used a range based
for
loop 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
1
v 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 for
slučky sme použili slučku na diaľku .
Normálna for
slučka vyžaduje, aby sme určili počet iterácií, ktorý je daný veľkosťou poľa.
Diaľková for
sluč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.