Ce face std::set::find
Toate trei caută în O(log n). contains (C++20) este cea mai clară când vrei doar un da/nu. count returnează 0 sau 1 la std::set și numărul de apariții la std::multiset. find returnează un iterator, util dacă vrei apoi să ștergi elementul sau să mergi la vecinii lui.
Parametri
| Parametru | Descriere |
|---|---|
valoare |
Valoarea căutată. |
Ce returnează
find: iterator sau end(). contains: bool. count: număr.
Exemple
Exemplul 1: Liste de acces
#include <print>
#include <set>
#include <string>
int main() {
const std::set<std::string> admini{"ana", "radu"};
for (std::string utilizator : {"radu", "mihai"}) {
std::println("{}: {}", utilizator, admini.contains(utilizator) ? "admin" : "utilizator obișnuit");
}
std::println("count(\"ana\") = {}", admini.count("ana"));
std::set<int> numere{10, 20, 30, 40};
auto it = numere.find(30);
if (it != numere.end()) {
std::println("Am găsit {}; vecinul din stânga este {}", *it, *std::prev(it));
}
}
Rezultat
radu: admin
mihai: utilizator obișnuit
count("ana") = 1
Am găsit 30; vecinul din stânga este 20
Greșeli frecvente
- Folosești
std::finddin<algorithm>pe un set: caută element cu element (O(n)). Funcția membrăs.findfolosește ordinea și este mult mai rapidă.
Comenzi înrudite
std::set: Mulțime ordonată de valori unice: elimină automat duplicatele și păstrează elementele sortate.std::map::find: find() caută o cheie și returnează un iterator la ea sau end(); count() și contains() spun doar dacă există.std::set::erase: Șterge din set o valoare, elementul indicat de un iterator sau un interval de elemente.