Polia C ++ (s príkladmi)

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 indexe 0.
  • 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 prvku x(1)2124d, adresa x(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:

  1. 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.
  2. 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:

  1. 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 and count = 0.
  2. 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.
  3. Hodnotu count tiež zvyšujeme o 1v každej iterácii, aby sme na konci cyklu for mohli získať veľkosť poľa.
  4. 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.

Zaujímavé články...