algorithm library
Főnév
algorithm library (tsz. algorithm libraries)
- (informatika) A C++ Standard Library
algorithmkö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 |
- algorithm library - Szótár.net (en-hu)
- algorithm library - Sztaki (en-hu)
- algorithm library - Merriam–Webster
- algorithm library - Cambridge
- algorithm library - WordNet
- algorithm library - Яндекс (en-ru)
- algorithm library - Google (en-hu)
- algorithm library - Wikidata
- algorithm library - Wikipédia (angol)