std::min element (tsz. std::min elements)
std::min_element
egy STL algoritmus, amely egy tartomány legkisebb elemét keresi meg és egy iterátort ad vissza rá. Ez a függvény az algorithm
könyvtár része.
std::min_element
SzintaxisA függvény kétféleképpen használható:
#include <algorithm>
#include <vector>
#include <iostream>
auto min_it = std::min_element(first, last);
auto min_it = std::min_element(first, last, comp);
first
: A tartomány kezdete (iterátor).last
: A tartomány vége (iterátor).comp
(opcionális): Egy összehasonlító függvény, amely meghatározza az összehasonlítás módját.Visszatérési érték:
Egy iterátor a legkisebb elemre (ha több ilyen is van, az elsőre).
std::min_element
-tel#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> v = {5, 2, 8, 1, 3};
auto min_it = std::min_element(v.begin(), v.end());
std::cout << "A legkisebb elem: " << *min_it << std::endl;
return 0;
}
Kimenet:
A legkisebb elem: 1
Magyarázat: - A std::min_element(v.begin(), v.end())
meghatározza a legkisebb értékű elemet (1
). - Az iterátor *min_it
segítségével kinyerjük az értékét.
std::min_element
TömbbelA std::min_element
nem csak vektorral, hanem tömbökkel is működik.
#include <iostream>
#include <algorithm>
int main() {
int arr = {10, 20, 5, 8, 2};
auto min_it = std::min_element(std::begin(arr), std::end(arr));
std::cout << "A legkisebb elem: " << *min_it << std::endl;
return 0;
}
Kimenet:
A legkisebb elem: 2
Megjegyzés:
A std::begin(arr)
és std::end(arr)
biztonságos módszer egy tömb iterálására.
A std::min_element
-nek átadhatunk egy egyedi összehasonlító függvényt, hogy megváltoztassuk az összehasonlítás módját.
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
bool abs_compare(int a, int b) {
return std::abs(a) < std::abs(b);
}
int main() {
std::vector<int> v = {-10, -3, 5, -1, 8};
auto min_it = std::min_element(v.begin(), v.end(), abs_compare);
std::cout << "Az abszolút legkisebb elem: " << *min_it << std::endl;
return 0;
}
Kimenet:
Az abszolút legkisebb elem: -1
Magyarázat: - Az abs_compare()
összehasonlítja az abszolút értékeket (std::abs(a) < std::abs(b)
). - A std::min_element
ezt az egyedi logikát használja.
std::min_element
és Páros StruktúrákHa egy pár struktúrából szeretnénk a legkisebb értéket kiszámítani, akkor egyedi összehasonlítót kell használni.
#include <iostream>
#include <vector>
#include <algorithm>
struct Ember {
std::string nev;
int kor;
};
bool compare_by_age(const Ember& a, const Ember& b) {
return a.kor < b.kor;
}
int main() {
std::vector<Ember> emberek = {{"Anna", 25}, {"Béla", 30}, {"Csaba", 22}};
auto min_it = std::min_element(emberek.begin(), emberek.end(), compare_by_age);
std::cout << "A legfiatalabb: " << min_it->nev << " (" << min_it->kor << " év)" << std::endl;
return 0;
}
Kimenet:
A legfiatalabb: Csaba (22 év)
Magyarázat: - A compare_by_age()
összehasonlítja az embereket az életkoruk szerint. - A std::min_element
ezt a logikát használja.
std::min
Több ÉrtékreHa csak két értéket szeretnénk összehasonlítani, a std::min()
egyszerűbb:
#include <iostream>
#include <algorithm>
int main() {
int a = 10, b = 5;
std::cout << "A kisebbik: " << std::min(a, b) << std::endl;
return 0;
}
Kimenet:
A kisebbik: 5
✅ std::min_element
egy iterátort ad vissza a legkisebb elemre egy tartományban.
✅ Vektorokkal és tömbökkel egyaránt működik.
✅ Egyedi összehasonlító függvény is használható.
✅ Ha csak két értéket kell összehasonlítani, akkor std::min()
elegendő.
Ha hatékony minimumkeresésre van szükséged egy tömbben vagy vektorban, a std::min_element
a legjobb választás! 🚀