Ce face std::is_sorted
std::is_sorted parcurge intervalul o singură dată și returnează true dacă fiecare element este cel puțin egal cu cel dinaintea lui. Un interval gol sau cu un singur element este considerat sortat.
Înrudit: std::is_sorted_until returnează iteratorul către primul element care strică ordinea.
Parametri
| Parametru | Descriere |
|---|---|
first, last |
Intervalul verificat. |
comp |
Opțional. Criteriul de ordine, de exemplu std::greater<>() pentru descrescător. |
Ce returnează
true dacă intervalul este sortat, altfel false.
Exemple
Exemplul 1: Verificări simple
#include <algorithm>
#include <functional>
#include <print>
#include <vector>
int main() {
std::vector<int> a{1, 3, 3, 8};
std::vector<int> b{5, 2, 9};
std::vector<int> c{10, 7, 4};
std::println("a crescător: {}", std::is_sorted(a.begin(), a.end()));
std::println("b crescător: {}", std::ranges::is_sorted(b));
std::println("c descrescător: {}", std::ranges::is_sorted(c, std::greater<>()));
}
Rezultat
a crescător: true
b crescător: false
c descrescător: true
Exemplul 2: Unde se strică ordinea
#include <algorithm>
#include <print>
#include <vector>
int main() {
std::vector<int> temperaturi{12, 14, 17, 15, 19};
auto it = std::is_sorted_until(temperaturi.begin(), temperaturi.end());
std::println("Ordinea se strică la poziția {} (valoarea {})", it - temperaturi.begin(), *it);
}
Rezultat
Ordinea se strică la poziția 3 (valoarea 15)
Greșeli frecvente
- Apelezi
std::is_sortedînainte de fiecarestd::binary_searchîntr-o buclă: verificarea parcurge tot vectorul și anulează avantajul căutării binare.
Comenzi înrudite
std::sort: Sortează elementele dintr-un interval, crescător sau după o regulă dată de tine.std::binary_search: Verifică foarte rapid dacă o valoare există într-un interval deja sortat.std::adjacent_find: Găsește prima pereche de elemente vecine egale (sau care îndeplinesc o condiție între ele).