Ugrás a tartalomhoz

vector library

A Wikiszótárból, a nyitott szótárból


Főnév

vector library (tsz. vector libraries)

  1. (informatika)

vector könyvtár C++ nyelven

A vector a C++ Standard Template Library (STL) egyik dinamikus adatszerkezete, amely egy automatikusan méreteződő tömbként működik. A vector használatával hatékonyan kezelhetünk elemeket, dinamikusan bővíthetjük vagy csökkenthetjük a méretét, és sok beépített függvényt kínál az adatok kezelésére.

A vector használatához be kell illeszteni az #include <vector> fejlécet.



1. vector létrehozása és alapvető használata

A vector használata hasonló egy hagyományos tömbhöz, de sokkal rugalmasabb.

Egyszerű vector létrehozása

#include <iostream>
#include <vector>

int main() {
    std::vector<int> szamok = {1, 2, 3, 4, 5}; // Létrehozás és inicializálás
    std::cout << "Az első elem: " << szamok[0] << std::endl;
    std::cout << "A vektor mérete: " << szamok.size() << std::endl;
    return 0;
}

🔹 std::vector<int> - Egy int típusú vektort hozunk létre.
🔹 size() - Megadja az elemek számát.



2. Elemműveletek

A vector támogatja az elemek beszúrását, törlését és módosítását.

Elemek hozzáadása (push_back)

#include <iostream>
#include <vector>

int main() {
    std::vector<int> szamok;
    szamok.push_back(10);
    szamok.push_back(20);
    szamok.push_back(30);

    std::cout << "A vektor tartalma: ";
    for (int szam : szamok) {
        std::cout << szam << " ";
    }
    std::cout << std::endl;
    return 0;
}

🔹 push_back(value) - Hozzáad egy elemet a vektor végéhez.



Elemek törlése (pop_back és erase)

#include <iostream>
#include <vector>

int main() {
    std::vector<int> szamok = {10, 20, 30, 40, 50};
    
    szamok.pop_back(); // Utolsó elem törlése
    szamok.erase(szamok.begin() + 1); // Második elem törlése (index 1)

    std::cout << "A vektor tartalma: ";
    for (int szam : szamok) {
        std::cout << szam << " ";
    }
    std::cout << std::endl;
    return 0;
}

🔹 pop_back() - Eltávolítja az utolsó elemet.
🔹 erase(iterator) - Egy adott pozíción lévő elemet töröl.



Vektor törlése (clear)

szamok.clear(); // Minden elem törlése

🔹 clear() - Az összes elemet eltávolítja, de a vektor kapacitása nem változik.



3. Méret és kapacitás kezelése

A vector automatikusan növeli a méretét, de lehetőség van előre beállítani a kapacitását.

Méret és kapacitás lekérdezése

std::cout << "Méret: " << szamok.size() << std::endl;      // Az aktuális elemszám
std::cout << "Kapacitás: " << szamok.capacity() << std::endl;  // A lefoglalt memória

Kapacitás növelése (reserve)

szamok.reserve(100); // Lefoglalja a memóriát 100 elem számára

🔹 reserve(n) - Előre lefoglal n elemnyi memóriát, így elkerülhetjük a többszöri újrafoglalás miatti teljesítménycsökkenést.



4. Elemlista bejárása (iteráció)

A vektorok bejárására több módszer is létezik.

Hagyományos for ciklus

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

for-each ciklus

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

Iteratorok használata

for (std::vector<int>::iterator it = szamok.begin(); it != szamok.end(); ++it) {
    std::cout << *it << " ";
}

🔹 Az begin() az első elemre mutat.
🔹 Az end() az utolsó utáni elemre mutat.



5. Keresés és rendezés

Elem keresése (find)

#include <iostream>
#include <vector>
#include <algorithm>

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

    auto it = std::find(szamok.begin(), szamok.end(), 30);
    if (it != szamok.end()) {
        std::cout << "Az elem megtalálható a vektorban." << std::endl;
    } else {
        std::cout << "Az elem NINCS a vektorban." << std::endl;
    }
    return 0;
}

Vektor rendezése (sort)

std::sort(szamok.begin(), szamok.end()); // Növekvő sorrend
std::sort(szamok.rbegin(), szamok.rend()); // Csökkenő sorrend

🔹 sort() gyorsan rendezi a vektort növekvő sorrendben.
🔹 rbegin() és rend() segítségével csökkenő sorrendbe rendezhetjük.



6. Két vektor összefűzése

#include <iostream>
#include <vector>

int main() {
    std::vector<int> v1 = {1, 2, 3};
    std::vector<int> v2 = {4, 5, 6};

    v1.insert(v1.end(), v2.begin(), v2.end()); // Második vektor elemeit hozzáadja az elsőhöz

    for (int n : v1) {
        std::cout << n << " ";
    }
    return 0;
}

🔹 insert() - Egy másik vektor elemeit illeszti be.



7. Többdimenziós vektorok

A vector támogatja a tömbök tömbjét (mátrixokat).

#include <iostream>
#include <vector>

int main() {
    std::vector<std::vector<int>> matrix = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };

    for (const auto& sor : matrix) {
        for (int elem : sor) {
            std::cout << elem << " ";
        }
        std::cout << std::endl;
    }
    return 0;
}

🔹 A vector<vector<int>> mátrixokat reprezentál.



Összegzés

A vector a C++ egyik legfontosabb adatszerkezete, amely: ✅ Dinamikusan méretezhető
✅ Kényelmes elemműveleteket kínál (push_back, pop_back, erase)
✅ Hatékonyan kezeli a memóriát (reserve, shrink_to_fit)
✅ Könnyen bejárható és rendezhető
✅ Többdimenziós vektorokkal is működik

Ha dinamikus tömböt keresel C++-ban, a vector az egyik legjobb választás! 🚀