std::minmax în C++

Returnează dintr-un singur apel o pereche formată din cea mai mică și cea mai mare valoare.

Sintaxă
std::pair<const T&, const T&> minmax(const T& a, const T& b);
std::pair<T, T> minmax(std::initializer_list<T> lista);

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.