C++ libraries
Megjelenés
Főnév
C++ libraries (tsz. C++ librarieses)
- (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ömbstd::list– láncolt listastd::deque– kétvégű sorstd::map,std::unordered_map– asszociatív tárolókstd::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)
.libvagy.afájl kell- A
g++vagyclang++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ó.
- C++ libraries - Szótár.net (en-hu)
- C++ libraries - Sztaki (en-hu)
- C++ libraries - Merriam–Webster
- C++ libraries - Cambridge
- C++ libraries - WordNet
- C++ libraries - Яндекс (en-ru)
- C++ libraries - Google (en-hu)
- C++ libraries - Wikidata
- C++ libraries - Wikipédia (angol)