#include "utils.hpp"
#include <unordered_set>
using namespace std;
/*
unordered_set – elérhető fontos tagfüggvények (hash-alapú, egyedi elemek, rendezetlen):
Konstruktorok / inicializálás:
unordered_set()
unordered_set(initializer_list<T>)
unordered_set(first, last)
Kapacitás és méret:
size()
empty()
max_size()
reserve(n) // várt elemszám alapján hash-tábla méretezése
rehash(bucket_count) // kosárszám beállítása
Hash/bucket statisztikák:
bucket_count()
bucket_size(n)
bucket(key)
load_factor()
max_load_factor()
// max_load_factor(x) // terhelési tényező beállítása
Iterátorok:
begin(), end()
cbegin(), cend()
Keresés / lekérdezés:
find(const T& key)
count(const T& key)
contains(const T& key) // C++20
equal_range(const T& key)
Módosító műveletek:
insert(const T& value) / insert(T&& value)
insert(first, last) / insert(init_list)
emplace(args...)
erase(pos) / erase(first, last) / erase(const T& key)
clear()
swap(other)
merge(other) // C++17
extract(key) / extract(pos)
Megjegyzések:
- Sorrend NEM garantált; átlagban O(1) keresés/beszúrás/törlés.
- rehash/reserve a teljesítmény finomhangolására.
*/
void demo_unordered_set() {
unordered_set<string> s = { "kutya", "macska", "hal" };
s.insert("madar");
print_container(s, "Unordered_set tartalma");
cout << (s.find("hal") != s.end() ? "hal benne van\n" : "hal nincs benne\n");
s.erase("macska");
print_container(s, "macska törlése után");
cout << "A halmaz üres? " << (s.empty() ? "Igen" : "Nem") << "\n";
}