Ce face std::all_of
Cele trei funcții răspund la întrebări de tip da/nu despre un interval: all_of – toate elementele îndeplinesc condiția? any_of – există măcar unul? none_of – nu există niciunul?
Se opresc imediat ce răspunsul este sigur. Pe un interval gol, all_of și none_of returnează true, iar any_of returnează false.
Parametri
| Parametru | Descriere |
|---|---|
first, last |
Intervalul verificat. |
conditie |
Funcție care primește un element și returnează bool. |
Ce returnează
true sau false.
Exemple
Exemplul 1: Validarea unui cod PIN
#include <algorithm>
#include <cctype>
#include <print>
#include <string>
int main() {
std::string pin = "4821";
auto e_cifra = [](unsigned char c) { return std::isdigit(c) != 0; };
bool valid = pin.size() == 4 && std::all_of(pin.begin(), pin.end(), e_cifra);
std::println("PIN valid: {}", valid);
}
Rezultat
PIN valid: true
Exemplul 2: Toate trei pe aceleași date
#include <algorithm>
#include <print>
#include <vector>
int main() {
std::vector<int> stocuri{12, 0, 7, 3};
auto epuizat = [](int s) { return s == 0; };
std::println("Toate epuizate: {}", std::ranges::all_of(stocuri, epuizat));
std::println("Măcar unul epuizat: {}", std::ranges::any_of(stocuri, epuizat));
std::println("Niciunul epuizat: {}", std::ranges::none_of(stocuri, epuizat));
}
Rezultat
Toate epuizate: false
Măcar unul epuizat: true
Niciunul epuizat: false
Exemplul 3: Interval gol
Pe un vector gol, „toate” este adevărat, iar „măcar unul” este fals.
#include <algorithm>
#include <print>
#include <vector>
int main() {
std::vector<int> gol;
auto pozitiv = [](int x) { return x > 0; };
std::println("{} {} {}", std::ranges::all_of(gol, pozitiv), std::ranges::any_of(gol, pozitiv),
std::ranges::none_of(gol, pozitiv));
}
Rezultat
true false true
Greșeli frecvente
- Uiți că
all_ofpe un vector gol returneazătrue. Dacă un vector gol trebuie respins, verifică separatempty().
Comenzi înrudite
std::find_if: Găsește primul element care îndeplinește o condiție (find_if) sau primul care nu o îndeplinește (find_if_not).std::count: Numără de câte ori apare o valoare (count) sau câte elemente îndeplinesc o condiție (count_if).std::equal: Verifică dacă două intervale conțin aceleași elemente, în aceeași ordine.