Ce face std::count
std::count parcurge intervalul și numără elementele egale cu valoarea dată. std::count_if numără elementele pentru care funcția primită returnează true.
Rezultatul are tipul difference_type (un întreg cu semn, de obicei long), nu size_t.
Parametri
| Parametru | Descriere |
|---|---|
first, last |
Intervalul. |
valoare |
Pentru count: valoarea numărată. |
conditie |
Pentru count_if: funcție care returnează bool. |
Ce returnează
Numărul de elemente găsite.
Exemple
Exemplul 1: De câte ori apare o literă
#include <algorithm>
#include <print>
#include <string>
int main() {
std::string text = "banana";
std::println("Litera a apare de {} ori", std::count(text.begin(), text.end(), 'a'));
}
Rezultat
Litera a apare de 3 ori
Exemplul 2: Câți elevi au trecut
#include <algorithm>
#include <print>
#include <vector>
int main() {
std::vector<double> note{9.5, 4.0, 7.25, 3.5, 10.0, 6.0};
auto promovati = std::count_if(note.begin(), note.end(), [](double n) { return n >= 5; });
auto cu_zece = std::ranges::count(note, 10.0);
std::println("Promovați: {} din {}", promovati, note.size());
std::println("Note de 10: {}", cu_zece);
}
Rezultat
Promovați: 4 din 6
Note de 10: 1
Greșeli frecvente
- Compari rezultatul cu un
size_t(de exempluv.size()) și compilatorul avertizează pentru comparație între semn și fără semn. Convertește explicit unul dintre ele.
Comenzi înrudite
std::find: Caută prima apariție a unei valori într-un interval și returnează un iterator către ea.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::all_of: Verifică dacă toate (all_of), măcar unul (any_of) sau niciunul (none_of) dintre elemente îndeplinesc o condiție.std::accumulate: Adună toate elementele unui interval pornind de la o valoare inițială (sau le combină cu o operație dată).