algorithm library

Üdvözlöm, Ön a algorithm library szó jelentését keresi. A DICTIOUS-ban nem csak a algorithm library 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 algorithm library szót egyes és többes számban mondani. Minden, amit a algorithm library szóról tudni kell, itt található. A algorithm library szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. Aalgorithm library é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

algorithm library (tsz. algorithm libraries)

  1. (informatika) A C++ Standard Library algorithm könyvtára egy hatékony eszközkészlet az adatok kezelésére, rendezésére, keresésére és egyéb algoritmikus műveletekre. Az algoritmusok általában az STL (Standard Template Library) konténereivel (pl. vector, list, set) együtt működnek.

🔹 #include <algorithm>

A algorithm könyvtár minden függvénye elérhető az #include <algorithm> direktíva használatával.



1. A algorithm Könyvtár Főbb Kategóriái

Kategória Gyakori függvények Leírás
Rendezés sort(), stable_sort(), partial_sort() Elemsorok rendezése
Keresés find(), binary_search(), min_element(), max_element() Elemkeresés és minimum/maximum keresés
Számolás count(), accumulate() Elemek számlálása és összegzése
Átalakítás reverse(), rotate(), transform() Adatok manipulálása
Eltávolítás remove(), unique(), erase() Adatok törlése és duplikációk eltávolítása



2. Rendezési Algoritmusok

A std::sort() az egyik leggyakrabban használt algoritmus a algorithm könyvtárban.

Egyszerű növekvő sorrendbe rendezés

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

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

    std::sort(v.begin(), v.end());  // Növekvő sorrend

    std::cout << "Rendezett tömb: ";
    for (int x : v) std::cout << x << " ";
    return 0;
}

Kimenet:

Rendezett tömb: 1 2 3 5 8

Csökkenő sorrend

std::sort(v.begin(), v.end(), std::greater<int>());

Részleges rendezés – std::partial_sort()

Ha csak a legkisebb N elem kell rendezve:

std::partial_sort(v.begin(), v.begin() + 3, v.end());

3. Keresési Algoritmusok

Elem keresése – std::find()

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

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

    auto it = std::find(v.begin(), v.end(), 8);

    if (it != v.end())
        std::cout << "Az elem megtalálható a vektorban!" << std::endl;
    else
        std::cout << "Az elem nincs a vektorban!" << std::endl;

    return 0;
}

Bináris keresés – std::binary_search()

Figyelem! A binary_search() használata előtt rendezni kell az adatokat!

std::sort(v.begin(), v.end());
bool talalt = std::binary_search(v.begin(), v.end(), 8);

Minimum és Maximum keresése

int minElem = *std::min_element(v.begin(), v.end());
int maxElem = *std::max_element(v.begin(), v.end());

4. Számlálás és Összegzés

Elemek számolása – std::count()

int darab = std::count(v.begin(), v.end(), 2);

Összegzés – std::accumulate()

#include <iostream>
#include <vector>
#include <numeric> // FONTOS!

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

    int osszeg = std::accumulate(v.begin(), v.end(), 0);
    std::cout << "A vektor elemeinek összege: " << osszeg << std::endl;

    return 0;
}

5. Adatok Átalakítása

Fordított sorrend – std::reverse()

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

Forgatás – std::rotate()

std::rotate(v.begin(), v.begin() + 2, v.end()); // Az első 2 elem hátra kerül

Elemek transzformálása – std::transform()

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

int main() {
    std::vector<int> v = {1, 2, 3, 4, 5};
    std::transform(v.begin(), v.end(), v.begin(), (int x) { return x * x; });

    std::cout << "Elemek négyzete: ";
    for (int x : v) std::cout << x << " ";
    return 0;
}

Eredmény: 1 4 9 16 25



6. Elemek Eltávolítása

Eltávolítás érték alapján – std::remove()

A std::remove() átrendezi az elemeket, de a vektor méretét nem csökkenti!

v.erase(std::remove(v.begin(), v.end(), 3), v.end());

Duplikációk eltávolítása – std::unique()

Figyelem! A std::unique() csak egymás mellett lévő azonos elemeket távolít el, ezért előbb rendezni kell:

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

7. Példa – Kombinált Algoritmusok

A következő program rendezi, szűri, és összeadja az elemeket:

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

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

    // Rendezés
    std::sort(v.begin(), v.end());

    // Duplikációk eltávolítása
    v.erase(std::unique(v.begin(), v.end()), v.end());

    // Összegzés
    int osszeg = std::accumulate(v.begin(), v.end(), 0);

    // Kiírás
    std::cout << "Egyedi elemek: ";
    for (int x : v) std::cout << x << " ";
    std::cout << "\nÖsszeg: " << osszeg << std::endl;

    return 0;
}

Eredmény:

Egyedi elemek: 1 2 3 5 7 8
Összeg: 26

Összegzés

algorithm könyvtár egy hatékony és optimalizált eszköztár a C++-ban.
Rendezés, keresés, számlálás, manipuláció és törlés könnyedén megvalósítható.
Gyors futási idő (többnyire O(n log n) vagy O(n)).
STL konténerekkel együtt működik (pl. vector, list, set).

Ha hatékony és gyors algoritmusokra van szükséged a C++-ban, használd az algorithm könyvtár függvényeit! 🚀


Category Examples
Testing conditions std::all_of, std::any_of, std::none_of, std::is_sorted
Search algorithms std::find, std::find_if, std::search, std::adjacent_find
Counting std::count, std::count_if
Comparison std::equal, std::mismatch, std::lexicographical_compare
Modifying operations std::copy, std::swap, std::transform, std::replace
Remove/unique std::remove, std::remove_if, std::unique, std::unique_copy
Reordering std::reverse, std::rotate, std::shuffle, std::sort, std::partition
Heap operations std::make_heap, std::push_heap, std::pop_heap, std::sort_heap
Set operations std::set_union, std::set_intersection, std::set_difference, std::set_symmetric_difference
Bounds & sorting helpers std::lower_bound, std::upper_bound, std::nth_element, std::partial_sort
Min/max std::min, std::max, std::minmax, std::min_element, std::max_element
Permutations std::next_permutation, std::prev_permutation
Others std::merge, std::inplace_merge, std::includes