Ebben az oktatóanyagban megtanuljuk a tömbökkel való munkát. Megtanuljuk példák segítségével deklarálni, inicializálni és elérni a tömb elemeket a C ++ programozásban.
A C ++ - ban egy tömb olyan változó, amely több azonos típusú értéket képes tárolni. Például,
Tegyük fel, hogy egy osztálynak 27 tanulója van, és mindannyiuk osztályzatát tárolnunk kell. 27 különálló változó létrehozása helyett egyszerűen létrehozhatunk egy tömböt:
double grade(27);
Itt a grade egy tömb, amely maximum 27 double
típusú elemet tartalmazhat .
A C ++ rendszerben a tömbök mérete és típusa a deklaráció után nem változtatható meg.
C ++ tömb deklaráció
dataType arrayName(arraySize);
Például,
int x(6);
Itt,
int
- a tárolandó elem típusa- x - a tömb neve
6
- a tömb mérete
Hozzáférési elemek a C ++ tömbben
A C ++ - ban egy tömb minden eleme számhoz van rendelve. A szám tömbindexként ismert. A tömb elemeihez az indexek segítségével férhetünk hozzá.
// syntax to access array elements array(index);
Vegyük figyelembe a fent látható x tömböt.
Egy tömb elemei C ++ nyelvenNéhány emlékezetes dolog:
- A tömbindexek kezdődnek
0
. Az x (0) jelentése az első elem, amelyet az indexen tárolnak0
. - Ha egy tömb mérete van
n
, akkor az utolsó elemet az index tárolja(n-1)
. Ebben a példában x (5) az utolsó elem. - Egy tömb elemeinek egymást követő címe van. Tegyük fel például, hogy a kezdő címe
x(0)
2120d. Ezután a következő elemx(1)
címe 2124d, a címex(2)
2128d lesz, és így tovább.
Itt az egyes elemek méretétint
4-gyel növeljük. Ennek az az oka, hogy a méret 4 bájt.
C ++ tömb inicializálása
A C ++ nyelven lehetséges a tömb inicializálása a deklaráció során. Például,
// declare and initialize and array int x(6) = (19, 10, 8, 17, 9, 15);
C ++ tömb elemek és azok adatai
Egy másik módszer a tömb inicializálására a deklaráció során:
// declare and initialize an array int x() = (19, 10, 8, 17, 9, 15);
Itt nem említettük a tömb méretét. Ilyen esetekben a fordító automatikusan kiszámítja a méretet.
C ++ tömb üres tagokkal
A C ++ - ban, ha egy tömbnek van mérete n
, legfeljebb n elemet tárolhatunk a tömbben. Mi történik azonban, ha kevesebb mint n elemet tárolunk.
Például,
// store only 3 elements in the array int x(6) = (19, 10, 8);
Itt az x tömb mérete 6
. Inicializáltuk azonban csak 3 elemmel.
Ilyen esetekben a fordító véletlenszerű értékeket rendel a maradék helyekhez. Gyakran ez a véletlenszerű érték egyszerűen 0
.
Hogyan lehet beilleszteni és kinyomtatni a tömb elemeket?
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);
1. példa: Tömb elemek megjelenítése
#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; )
Kimenet
A számok a következők: 7 5 6 12 35. A számok: 7 5 6 12 35
Itt már használják a for
hurok hajtogat re i = 0
a i = 4
. Minden iterációban nyomtattunk numbers(i)
.
A tömb elemeinek kinyomtatásához ismét egy cikluson alapuló tartományt használtunk. Ha többet szeretne megtudni erről a hurokról, ellenőrizze a C ++ Ranged for Loop elemet.
Megjegyzés: Tartományalapú ciklusunkban a kódot használtuk a tartománydeklaráció const int &n
helyett int n
. Ez azonban const int &n
előnyösebb, mert:
- Az
int n
egyszerű használatával az iteráció során az array elemeket az n változóba másolja. Ez nem memória-hatékony.
Az & n azonban a tömb elemek memória címét használja adatok eléréséhez anélkül, hogy új változóba másolná őket. Ez memória-hatékony. - Egyszerűen kinyomtatjuk a tömb elemeket, nem módosítjuk őket. Ezért arra használjuk
const
, hogy véletlenül ne változtassuk meg a tömb értékeit.
2. példa: Vegye be a felhasználótól a bemeneteket, és tárolja őket egy tömbben
#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; )
Kimenet
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. - Az
1
egyes iterációkban növeljük a számlálás értékét is , hogy a for ciklus végére megkapjuk a tömb méretét. - Az összes elem kinyomtatása után kinyomtatjuk az összes szám összegét és átlagát. A számok átlagát a
average = sum / count;
Megjegyzés:for
Normál for
hurok helyett tartományt használtunk .
Egy normál for
ciklushoz meg kell adnunk az iterációk számát, amelyet a tömb mérete ad meg.
De a távolsági for
hurok nem igényel ilyen specifikációkat.
C ++ tömb határon kívül
Ha egy 10 méretű tömböt deklarálunk, akkor a tömb 0 és 9 közötti indexeket tartalmaz.
Ha azonban megpróbáljuk elérni az elemet a 10-es indexnél, vagy meghaladja a 10-et, az meghatározatlan viselkedést eredményez.