Ugrás a tartalomhoz

C++ Standard Library

A Wikiszótárból, a nyitott szótárból
(std szócikkből átirányítva)


Főnév

C++ Standard Library (tsz. C++ Standard Libraries)

  1. (informatika) A C++ Standard Library egy gazdag funkciógyűjtemény, amely számos eszközt biztosít a programozók számára az adatszerkezetek, algoritmusok, be- és kimenetkezelés, memóriakezelés és sok más területen. Ezek a könyvtárak jelentősen könnyítik és gyorsítják a fejlesztést.



1. A C++ Standard Library Főbb Részei

A C++ Standard Library az alábbi nagyobb komponensekből áll:

Kategória Tartalom
Be- és kimenet iostream, fstream
Konténerek vector, list, map, set, deque
Algoritmusok sort, find, min_element, max_element
Iterátorok begin, end, next, prev
Memóriakezelés unique_ptr, shared_ptr
Szálkezelés thread, mutex, async
Matematika és számkezelés cmath, numeric, random
Dátum és idő chrono

A Standard Library a std névtérben (namespace) található, így a legtöbb funkció elérése std:: előtaggal történik.



2. Be- és Kimenet (iostream, fstream)

A Standard Library biztosítja a konzolos és fájlalapú I/O műveleteket.

Konzol be- és kimenet

#include <iostream>

int main() {
    std::cout << "Hello, világ!" << std::endl;

    int szam;
    std::cout << "Adj meg egy számot: ";
    std::cin >> szam;
    std::cout << "A beírt szám: " << szam << std::endl;

    return 0;
}

Fájl be- és kimenet (fstream)

#include <iostream>
#include <fstream>

int main() {
    std::ofstream fajl("adat.txt"); // Fájl megnyitása írásra
    fajl << "Ez egy sor a fájlban.\n";
    fajl.close();

    std::ifstream beolvas("adat.txt"); // Fájl megnyitása olvasásra
    std::string sor;
    while (std::getline(beolvas, sor)) {
        std::cout << sor << std::endl;
    }
    return 0;
}

3. Konténerek (STL konténerek)

A konténerek olyan adatszerkezetek, amelyek elemek tárolására és kezelésére szolgálnak.

Leggyakoribb konténerek:

Konténer Leírás
std::vector Dinamikus tömb, gyors indexelés
std::list Kétirányú láncolt lista
std::deque Dupla végű sor
std::set Egyedi elemek halmaza (rendezett)
std::map Kulcs-érték párok tárolása (rendezett)

Példa: std::vector használata

#include <iostream>
#include <vector>

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

    v.push_back(6);
    v.pop_back();

    for (int x : v) std::cout << x << " ";
    return 0;
}

Eredmény: 1 2 3 4 5



4. Algoritmusok (algorithm)

Az algorithm könyvtár hatékony rendezési, keresési és egyéb műveleteket biztosít.

Algoritmus Leírás
std::sort Rendezés növekvő sorrendbe
std::find Elem keresése
std::min_element Legkisebb elem keresése
std::max_element Legnagyobb elem keresése

Példa: std::sort és std::find

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

int main() {
    std::vector<int> v = {8, 3, 7, 1, 5};

    std::sort(v.begin(), v.end());

    auto it = std::find(v.begin(), v.end(), 7);
    if (it != v.end()) {
        std::cout << "A 7-es megtalálható a vektorban!" << std::endl;
    }
    return 0;
}

5. Iterátorok (iterator)

Az iterátorok lehetővé teszik a konténerek elemeinek bejárását.

Iterátor Leírás
begin() Első elemre mutató iterátor
end() Utolsó elem utáni iterátor
rbegin() Fordított iteráció kezdete
rend() Fordított iteráció vége

Példa: Iterátor használata

#include <iostream>
#include <vector>

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

    for (auto it = v.begin(); it != v.end(); ++it) {
        std::cout << *it << " ";
    }
    return 0;
}

Eredmény: 1 2 3 4 5



6. Okos Mutatók (memory)

A dinamikus memória kezelése okos mutatókkal történhet.

Okos mutató Leírás
std::unique_ptr Egyedüli tulajdonos
std::shared_ptr Több helyen is megosztott tulajdonjog
std::weak_ptr Gyenge referencia, elkerüli a ciklikus hivatkozásokat

Példa: std::unique_ptr

#include <iostream>
#include <memory>

int main() {
    std::unique_ptr<int> ptr = std::make_unique<int>(10);
    std::cout << "Érték: " << *ptr << std::endl;
    return 0;
}

Kimenet: Érték: 10



7. Szálkezelés (thread)

A Standard Library natív többszálú programozást is támogat.

Példa: Többszálú végrehajtás

#include <iostream>
#include <thread>

void hello() {
    std::cout << "Hello szálból!" << std::endl;
}

int main() {
    std::thread t(hello);
    t.join(); // Megvárja a szál befejeződését
    return 0;
}

Eredmény: Hello szálból!



Összegzés

Beépített könyvtárak: A C++ Standard Library nagyon sok kész eszközt kínál.
Konténerek és algoritmusok: Hatékony adatszerkezetek és rendezési/keresési algoritmusok.
Modern programozás támogatása: Okos mutatók, szálkezelés, memóriakezelés.
Biztonságosabb és gyorsabb fejlesztés: Az STL használata jobb és rövidebb kódot eredményez.

Ha hatékonyan szeretnéd kihasználni a C++ erejét, használd a Standard Library eszközeit! 🚀