Ce face std::min
std::min(a, b) returnează valoarea mai mică; dacă sunt egale, returnează prima. Din C++11 poți da o listă: std::min({a, b, c}).
Ambele argumente trebuie să aibă exact același tip: std::min(3, 2.5) nu compilează. Scrie tipul explicit, de exemplu std::min<double>(3, 2.5). Pentru elementul minim dintr-un container folosește std::min_element sau std::ranges::min(v).
Parametri
| Parametru | Descriere |
|---|---|
a, b |
Valorile comparate (același tip). |
lista |
Lista de valori între acolade. |
comp |
Opțional (ultimul argument). Funcția de comparare. |
Ce returnează
Cea mai mică valoare (prin referință pentru două argumente, prin copie pentru listă).
Exemple
Exemplul 1: Două valori și o listă
#include <algorithm>
#include <print>
int main() {
int stoc = 14;
int cerere = 20;
std::println("Livrăm {} bucăți", std::min(stoc, cerere));
std::println("Cel mai mic preț: {}", std::min({49, 35, 60, 42}));
std::println("Cu tip explicit: {}", std::min<double>(3, 2.5));
}
Rezultat
Livrăm 14 bucăți
Cel mai mic preț: 35
Cu tip explicit: 2.5
Exemplul 2: Cel mai scurt nume, cu comparator
#include <algorithm>
#include <print>
#include <string>
#include <vector>
int main() {
auto mai_scurt = [](const std::string& a, const std::string& b) { return a.size() < b.size(); };
std::println("{}", std::min({std::string("Alexandra"), std::string("Ion"), std::string("Maria")}, mai_scurt));
std::vector<int> v{7, 3, 9};
std::println("Minim din vector: {}", std::ranges::min(v));
}
Rezultat
Ion
Minim din vector: 3
Greșeli frecvente
- Amesteci tipuri:
std::min(v.size(), 10)nu compilează (size_tșiint). Scriestd::min(v.size(), size_t{10}). - Păstrezi rezultatul ca referință (
const int& m = std::min(a + 1, b);): referința arată spre o valoare temporară deja distrusă. - Pe Windows, macro-urile
min/maxdin<windows.h>strică apelul. DefineșteNOMINMAXsau scrie(std::min)(a, b).
Comenzi înrudite
std::max: Returnează cea mai mare dintre două valori sau dintr-o listă de valori scrisă între acolade.std::minmax: Returnează dintr-un singur apel o pereche formată din cea mai mică și cea mai mare valoare.std::min_element: Găsește cel mai mic (min_element) sau cel mai mare (max_element) element dintr-un interval și returnează un iterator.std::clamp: Limitează o valoare la un interval: o aduce la minim dacă e prea mică și la maxim dacă e prea mare.