Ce face std::minmax
std::minmax compară valorile o singură dată și returnează {minim, maxim} ca std::pair. Cu structured bindings scrii direct auto [mic, mare] = std::minmax(a, b);.
Este util pentru a ordona două valori (de exemplu capetele unui interval) sau pentru a obține ambele extreme dintr-o listă.
Parametri
| Parametru | Descriere |
|---|---|
a, b |
Două valori. |
lista |
O listă de valori între acolade. |
Ce returnează
std::pair cu minimul în first și maximul în second.
Exemple
Exemplul 1: Ordonarea capetelor unui interval
#include <algorithm>
#include <print>
int main() {
int start = 30;
int final_ = 12;
auto [de_la, pana_la] = std::minmax(start, final_);
std::println("Interval: {} - {}", de_la, pana_la);
}
Rezultat
Interval: 12 - 30
Exemplul 2: Extremele unei liste
#include <algorithm>
#include <print>
int main() {
auto [minim, maxim] = std::minmax({18, 23, 15, 27, 21});
std::println("Temperatura minimă: {}°C, maximă: {}°C", minim, maxim);
}
Rezultat
Temperatura minimă: 15°C, maximă: 27°C
Greșeli frecvente
- Salvezi rezultatul cu două temporare (
auto p = std::minmax(a + 1, b + 1);): perechea conține referințe către valori deja distruse. Folosește varianta cu acolade sau variabile.
Comenzi înrudite
std::min: Returnează cea mai mică dintre două valori sau dintr-o listă de valori scrisă între acolade.std::max: Returnează cea mai mare dintre două valori sau dintr-o listă de valori scrisă între acolade.std::minmax_element: Găsește într-o singură parcurgere atât cel mai mic, cât și cel mai mare element dintr-un interval.