Pole C ++ (s příklady)

V tomto kurzu se naučíme pracovat s poli. Naučíme se deklarovat, inicializovat a přistupovat k prvkům pole v programování C ++ pomocí příkladů.

V C ++ je pole proměnná, která může ukládat více hodnot stejného typu. Například,

Předpokládejme, že třída má 27 studentů, a musíme si uložit známky všech z nich. Místo vytváření 27 samostatných proměnných můžeme jednoduše vytvořit pole:

 double grade(27);

Tady je známka pole, které pojme maximálně 27 prvků doubletypu.

V C ++ nelze velikost a typ polí po jeho deklaraci změnit.

Deklarace pole C ++

 dataType arrayName(arraySize);

Například,

 int x(6);

Tady,

  • int - typ prvku, který má být uložen
  • x - název pole
  • 6 - velikost pole

Přístup k prvkům v poli C ++

V C ++ je každý prvek v poli přidružen k číslu. Číslo je známé jako index pole. Můžeme přistupovat k prvkům pole pomocí těchto indexů.

 // syntax to access array elements array(index);

Zvažte pole x, které jsme viděli výše.

Prvky pole v C ++

Několik věcí k zapamatování:

  • Indexy pole začínají 0. Význam x (0) je první prvek uložený v indexu 0.
  • Pokud je velikost pole n, poslední prvek je uložen v indexu (n-1). V tomto příkladu je x (5) posledním prvkem.
  • Prvky pole mají po sobě jdoucí adresy. Předpokládejme například, že počáteční adresa x(0)je 2120d. Pak bude adresa dalšího prvku x(1)2124d, adresa x(2)bude 2128d atd.
    Zde se velikost každého prvku zvětší o 4. Je to proto, že velikost intje 4 bajty.

Inicializace pole C ++

V C ++ je možné během deklarace inicializovat pole. Například,

 // declare and initialize and array int x(6) = (19, 10, 8, 17, 9, 15);
Prvky pole C ++ a jejich data

Další metoda inicializace pole během deklarace:

 // declare and initialize an array int x() = (19, 10, 8, 17, 9, 15);

Zde jsme nezmínili velikost pole. V takových případech kompilátor automaticky vypočítá velikost.

Pole C ++ s prázdnými členy

V C ++, pokud má pole velikost n, můžeme do pole uložit až n počet prvků. Co se však stane, když uložíme méně než n počet prvků.

Například,

 // store only 3 elements in the array int x(6) = (19, 10, 8);

Zde má pole x velikost 6. Inicializovali jsme jej však pouze se 3 prvky.

V takových případech kompilátor přiřadí náhodným hodnotám zbývající místa. Často je tato náhodná hodnota jednoduše 0.

Prázdným členům pole je automaticky přiřazena hodnota 0

Jak vložit a vytisknout prvky pole?

 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);

Příklad 1: Zobrazení prvků pole

 #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ýstup

 Čísla jsou: 7 5 6 12 35 Čísla jsou: 7 5 6 12 35

Zde jsme použili forsmyčku k iteraci od i = 0do i = 4. V každé iteraci jsme vytiskli numbers(i).

Opět jsme použili rozsah založený na smyčce pro tisk prvků pole. Pokud se chcete o této smyčce dozvědět více, zkontrolujte smyčku v C ++ Ranged.

Poznámka: V naší smyčce založené na rozsahu jsme const int &nmísto int ndeklarace rozsahu použili kód . Je však const int &nvýhodnější, protože:

  1. Použití int njednoduše zkopíruje prvky pole do proměnné n během každé iterace. To není paměťově efektivní.
    & n však používá adresu paměti prvků pole pro přístup k jejich datům bez jejich kopírování do nové proměnné. To je paměťově efektivní.
  2. Jednoduše tiskneme prvky pole, neměníme je. Proto používáme const, abychom náhodně nezměnili hodnoty pole.

Příklad 2: Vezměte vstupy od uživatele a uložte je do pole

 #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ýstup

 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. Také 1v každé iteraci zvyšujeme hodnotu count o , abychom na konci smyčky for mohli získat velikost pole.
  4. Po vytištění všech prvků vytiskneme součet a průměr všech čísel. Průměr čísel je dán vztahemaverage = sum / count;

Poznámka:for Místo normální forsmyčky jsme použili smyčku na dálku .

Normální forsmyčka vyžaduje, abychom určili počet iterací, který je dán velikostí pole.

Ale forsmyčka na dálku takové specifikace nevyžaduje.

Pole C ++ mimo hranice

Pokud deklarujeme pole o velikosti 10, pak pole bude obsahovat prvky od indexu 0 do 9.

Pokud se však pokusíme o přístup k prvku na indexu 10 nebo více než 10, bude to mít za následek nedefinované chování.

Zajímavé články...