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 indexu0. - 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 prvkux(1)2124d, adresax(2)bude 2128d atd.
Zde se velikost každého prvku zvětší o 4. Je to proto, že velikostintje 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:
- 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í. - 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:
- 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. - Také
1v každé iteraci zvyšujeme hodnotu count o , abychom na konci smyčky for mohli získat velikost pole. - Po vytištění všech prvků vytiskneme součet a průměr všech čísel. Průměr čísel je dán vztahem
average = 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í.








