Üdvözlöm, Ön a szó jelentését keresi. A DICTIOUS-ban nem csak a szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a szót egyes és többes számban mondani. Minden, amit a szóról tudni kell, itt található. A szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. A és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.

Főnév

std::array (tsz. std::arrays)

  1. (informatika) Az std::array a C++ Standard Library (<array> fejléc) egy modern tömbtípusa, amely a hagyományos C++ tömbök alternatívája. A C++11 szabvány hozta be, és egy statikus méretű tömb, amely néhány extra funkcióval rendelkezik a hagyományos tömbökhöz képest.



1. Mi az std::array?

Az std::array egy fix méretű tömb, amely a std::vector-ral ellentétben nem dinamikus. A méretét a fordítási időben kell meghatározni, így a stack memóriában tárolódik, és nem kell new vagy delete hívásokkal foglalkozni.

Előnyei a hagyományos C++ tömbhöz képest

Biztonságosabb: Van hozzá tartozó metódus (.size(), .at(), stb.).
Jobban kompatibilis az STL-lel: Olyan funkciók érhetők el rá, mint az std::sort(), std::find(), stb.
Típusbiztosabb: Könnyebben átlátható és karbantartható.
Hatékony: Nem tartalmaz dinamikus memóriafoglalást, ezért gyors.



2. std::array deklarálása és inicializálása

Az std::array deklarálásának szintaxisa:

#include <iostream>
#include <array>

int main() {
    std::array<int, 5> szamok = {10, 20, 30, 40, 50};

    std::cout << "Elso elem: " << szamok << std::endl;
    std::cout << "Masodik elem: " << szamok << std::endl;

    return 0;
}

Kimenet:

Elso elem: 10
Masodik elem: 20
  • std::array<int, 5> → Statikus méretű tömb, amely 5 egész számot tartalmaz.
  • Használható a hagyományos tömbhöz hasonlóan, de plusz funkciókkal rendelkezik.



3. Elemléptetés és bejárás for ciklussal

Az std::array elemei indexelve vannak, így for ciklussal könnyen bejárhatók.

Példa – Hagyományos for ciklussal

#include <iostream>
#include <array>

int main() {
    std::array<int, 5> szamok = {10, 20, 30, 40, 50};

    for (size_t i = 0; i < szamok.size(); i++) {
        std::cout << "szamok = " << szamok << std::endl;
    }

    return 0;
}
  • A .size() metódussal kérhetjük le a tömb méretét.
  • Nincs szükség külön sizeof() számításra, mint a sima C++ tömböknél.

Példa – Tartomány alapú for ciklussal

#include <iostream>
#include <array>

int main() {
    std::array<int, 5> szamok = {10, 20, 30, 40, 50};

    for (int szam : szamok) {
        std::cout << szam << " ";
    }

    return 0;
}

Kimenet:

10 20 30 40 50
  • Egyszerűbb és olvashatóbb, mint az indexalapú ciklus.



4. std::array metódusai

Az std::array a következő fontos metódusokat támogatja:

Metódus Leírás
.size() Visszaadja a tömb méretét
.at(index) Biztonságos elemlekérdezés (kivételt dob, ha index hibás)
.front() Az első elemet adja vissza
.back() Az utolsó elemet adja vissza
.fill(value) Az összes elemet az adott értékre állítja
.data() A tömb első elemének pointerét adja vissza

Példa – at(), front(), back()

#include <iostream>
#include <array>

int main() {
    std::array<int, 5> szamok = {10, 20, 30, 40, 50};

    std::cout << "Elso elem (front()): " << szamok.front() << std::endl;
    std::cout << "Utolsó elem (back()): " << szamok.back() << std::endl;
    std::cout << "Masodik elem (at()): " << szamok.at(1) << std::endl; // Biztonságos lekérdezés

    return 0;
}
  • Az .at() biztonságosabb, mint a szamok, mert kivételt dob, ha az index hibás.



5. std::array és STL algoritmusok

Az std::array kompatibilis az STL algoritmusokkal, így olyan függvényekkel is működik, mint az std::sort() vagy std::find().

Példa – std::sort() használata

#include <iostream>
#include <array>
#include <algorithm> // STL algoritmusok

int main() {
    std::array<int, 5> szamok = {50, 10, 40, 30, 20};

    std::sort(szamok.begin(), szamok.end()); // Rendezés növekvő sorrendben

    for (int szam : szamok) {
        std::cout << szam << " ";
    }

    return 0;
}

Kimenet:

10 20 30 40 50
  • Az std::sort() függvény a begin() és end() iterátorokat használja a rendezéshez.



6. std::array vs. std::vector

Tulajdonság std::array std::vector
Méret Fix méretű Dinamikusan változtatható
Memória Stack alapú Heap alapú
Teljesítmény Gyorsabb, nincs dinamikus memóriafoglalás Lassabb lehet dinamikus növekedés miatt
Biztonság Tartalmaz ellenőrzött metódusokat Szintén biztonságos
Rugalmasság Kevésbé rugalmas, mert fix méretű Nagyon rugalmas, mivel bővíthető

Mikor használjuk az std::array-t?

✅ Ha fix méretű tömbre van szükségünk.
✅ Ha gyors teljesítmény kell dinamikus memóriafoglalás nélkül.
✅ Ha kompatibilitás kell az STL algoritmusokkal.

Mikor használjuk az std::vector-t?

✅ Ha a méret változhat futásidőben.
✅ Ha nagy mennyiségű elemet kezelünk.



Összegzés

Az std::array egy biztonságosabb és hatékonyabb alternatíva a hagyományos tömbökhöz.
Támogatja az STL algoritmusokat, mint az std::sort(), std::find(), stb.
Fix méretű és gyors, mivel nincs dinamikus memóriafoglalás.
STL iterátorokkal és metódusokkal kompatibilis.
Ha rugalmas méretre van szükség, akkor inkább std::vector ajánlott.