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ů double
typu.
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.
![](https://cdn.wiki-base.com/7012201/c_arrays_with_examples.png.webp)
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 velikostint
je 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);
![](https://cdn.wiki-base.com/7012201/c_arrays_with_examples_2.png.webp)
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
.
![](https://cdn.wiki-base.com/7012201/c_arrays_with_examples_3.png.webp)
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 for
smyčku k iteraci od i = 0
do 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 &n
místo int n
deklarace rozsahu použili kód . Je však const int &n
výhodnější, protože:
- Použití
int n
jednoduš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 =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. - Také
1
v 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í for
smyčky jsme použili smyčku na dálku .
Normální for
smyčka vyžaduje, abychom určili počet iterací, který je dán velikostí pole.
Ale for
smyč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í.