Rozumiem, że zestawy STL są oparte na abstrakcyjnej strukturze danych binarnego drzewa wyszukiwania. Więc jaka jest podstawowa struktura danych? Tablica?
Jak inni podkreślili, jest różna. Zestaw jest zwykle implementowany jako drzewo (drzewo czerwono-czarne, drzewo zrównoważone itp.), Ale mogą istnieć inne implementacje, które istnieją.
Co więcej, jak działa funkcja insert() dla zestawu ?
To zależy od podstawowej realizacji zestawu.Jeśli jest zaimplementowany jako drzewo binarne, to Wikipedia ma przykładową rekurencyjną implementację dla funkcji insert(). Możesz to sprawdzić.
W jaki sposób zestaw sprawdza, czy element już w nim istnieje?
Jeśli jest zaimplementowana jako drzewo, przechodzi przez drzewo i sprawdza każdy element. Jednak zestawy nie pozwalają na przechowywanie zduplikowanych elementów. Jeśli chcesz zestaw, który pozwala na powielanie elementów, potrzebujesz multiset.
czytałem na wikipedii, że inny sposób do zaimplementowania zestawu jest z hash tabeli. Jak to działa?
Możesz odwoływać się do hash_set, gdzie zestaw jest zaimplementowany przy użyciu tabel mieszania. Musisz podać funkcję skrótu, aby wiedzieć, w której lokalizacji przechowywać element. Ta implementacja jest idealna, gdy chcesz szybko wyszukać element. Jeśli jednak ważne jest, aby twoje elementy były przechowywane w określonej kolejności, wówczas implementacja drzewa jest bardziej odpowiednia, ponieważ możesz ją wykonać w przedsprzedaży, w trybie zamówienia lub postorder.
O ile mi wiadomo, std :: set jest zamówionym kontenerem. Jeśli jest to BST, w jaki sposób można zamówić przejazd? – Shasha99