Ugrás a tartalomhoz

C++ libraries

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


Főnév

C++ libraries (tsz. C++ librarieses)

  1. (informatika) A C++ könyvtár egy előre megírt, újrahasznosítható kódrészlet-gyűjtemény, amit funkciók, osztályok, algoritmusok és típusdefiníciók alkotnak. Segítségükkel nem kell mindent nulláról megírni – akár fájlkezelésről, hálózatról, adatstruktúrákról vagy grafikus felületekről van szó.



🎯 Könyvtártípusok

Típus Leírás
Standard könyvtár (STL) A C++ szabvány része, minden fordító tartalmazza
Harmadik féltől származó könyvtár Mások által írt, külön telepíthető csomagok
Saját könyvtár Te vagy a csapatod írta
Statikus könyvtár (.lib, .a) A kód a végleges binárisba beépül
Dinamikus könyvtár (.dll, .so) A futásidőben csatlakozik a programhoz



🔧 A Standard Library (STL) elemei

A C++ szabványos könyvtára minden modern fordítóban elérhető (GCC, Clang, MSVC stb.).

✅ 1. Fejléc fájlok

#include <vector>
#include <string>
#include <iostream>
#include <algorithm>
#include <map>
#include <thread>
#include <mutex>

✅ 2. Tárolók (Containers)

  • std::vector – dinamikus tömb
  • std::list – láncolt lista
  • std::deque – kétvégű sor
  • std::map, std::unordered_map – asszociatív tárolók
  • std::set, std::unordered_set – halmaz típusok
std::vector<int> szamok = {1, 2, 3};
szamok.push_back(4);

✅ 3. Algoritmusok

  • std::sort, std::find, std::for_each, std::count_if
std::sort(szamok.begin(), szamok.end());

✅ 4. Stringkezelés

std::string nev = "Anna";
std::cout << nev.length(); // 4

✅ 5. Idő és dátum (C++20-tól)

#include <chrono>
auto now = std::chrono::system_clock::now();

✅ 6. Fájlkezelés

#include <fstream>
std::ifstream in("be.txt");
std::string sor;
while (getline(in, sor)) { std::cout << sor << '\n'; }

✅ 7. Többszálúság

#include <thread>
void munka() { std::cout << "Dolgozom...\n"; }
std::thread t1(munka);
t1.join();

🌐 Népszerű külső könyvtárak

Ezeket külön kell letölteni, de hatalmas funkcionalitást adnak.

🔋 Boost

  • A legismertebb harmadik féltől származó könyvtárgyűjtemény
  • Moduláris: Boost.Filesystem, Boost.Asio, Boost.Regex
  • Sok komponens később STL részévé vált (pl. shared_ptr, optional)
#include <boost/filesystem.hpp>
boost::filesystem::create_directory("uj_mappa");

🔧 Qt

  • Teljes keretrendszer grafikus felületekhez
  • Használható C++ GUI appok, játékok, eszközök készítéséhez
QPushButton* gomb = new QPushButton("Kattints ide!");

🔢 Eigen

  • Mátrixok, lineáris algebra, numerikus számítás
  • Gyors, template-alapú, tiszta C++
Eigen::Matrix2d m;
m << 1, 2, 3, 4;

🔐 Crypto++

  • Kriptográfiai könyvtár
  • AES, RSA, SHA, stb.
CryptoPP::AutoSeededRandomPool rng;

🔄 Cereal / nlohmann/json

  • Adatsorozatolás (serialization)
  • JSON fájlok írása és olvasása
#include <nlohmann/json.hpp>
nlohmann::json j = {{"nev", "Anna"}, {"kor", 25}};
std::cout << j.dump();

🔊 SFML

  • Játék- és multimédia könyvtár
  • Hang, grafika, ablak, eseménykezelés
sf::RenderWindow ablak(sf::VideoMode(800, 600), "Jatek");

🧩 További érdekes könyvtárak

Név Terület
POCO Hálózat, XML, JSON
OpenCV Képfeldolgozás, gépi látás
Cinder Vizualizáció
TBB Többszálúság, Intel által fejlesztve
SDL2 Játékprogramozás
libcurl HTTP kérés-kezelés
fmt Modern printf stílusú formázás



⚙️ Hogyan használjunk könyvtárakat?

🧱 Fejléc alapú (header-only)

  • Csak #include és már használható
  • Példák: nlohmann/json, fmt
#include <fmt/core.h>
fmt::print("Hello, {}!\n", "világ");

🧰 Fordításos (compiled)

  • .lib vagy .a fájl kell
  • A g++ vagy clang++ parancshoz linkelni kell: -lboost_system, -lsfml-graphics



📦 Telepítés – eszközök

Rendszer Eszköz
Linux apt, dnf, pacman, vcpkg, conan
Windows vcpkg, conan, manuális DLL
Cross-platform CMake, Meson, Bazel stb.
vcpkg install boost
conan install fmt

🛡️ A jó könyvtár ismérvei

  • Dokumentációval rendelkezik
  • Aktívan fejlesztett
  • Platformfüggetlen
  • Licenc (MIT, BSD, Boost) – jogilag biztonságos használni



📘 Példaprojekt: JSON kezelő C++ program

#include <iostream>
#include <fstream>
#include <nlohmann/json.hpp>
using json = nlohmann::json;

int main() {
    json pelda = {
        {"nev", "Anna"},
        {"eletkor", 30}
    };

    std::ofstream ki("adat.json");
    ki << pelda.dump(4);

    std::ifstream be("adat.json");
    json betoltott;
    be >> betoltott;

    std::cout << betoltott["nev"] << " " << betoltott["eletkor"];
}

🧠 Összefoglalás

Fogalom Jelentés
Könyvtár Előre megírt kódgyűjtemény
STL A C++ szabvány része
Külső könyvtár Letölthető és külön linkelhető
Használat módja #include, majd linkelés (ha nem header-only)
Példák Boost, Qt, SDL2, OpenCV, fmt, JSON



💬 Záró gondolat

A C++ nyelv ereje nemcsak a nyelv magjában rejlik, hanem az azt körülvevő hatalmas könyvtár-ökoszisztémában is. A jól megválasztott könyvtárak gyorsítják a fejlesztést, csökkentik a hibákat, és professzionális megoldásokat kínálnak minden problémára – akár kezdő vagy, akár haladó.