Я понимаю, что STL-наборы основаны на абстрактной структуре данных двоичного дерева поиска. Итак, какова основная структура данных? Массив?
Как указывалось другими, оно варьируется. Набор обычно реализуется как дерево (красно-черное дерево, сбалансированное дерево и т. Д.), Хотя могут существовать и другие реализации.
Также, как вставка() работает для набора ?
Это зависит от базовой реализации вашего набора.Если он реализован как двоичное дерево, то Wikipedia имеет выборочную рекурсивную реализацию для функции insert(). Вы можете проверить это.
Как установить, установлен ли элемент в нем?
Если оно реализовано как дерево, оно пересекает дерево и проверяет каждый элемент. Однако наборы не позволяют сохранять повторяющиеся элементы. Если вам нужен набор, который позволяет дублировать элементы, вам нужен мультимножество.
Я прочитал на википедии, что другой способ осуществить комплекс является с хэш таблицы. Как это будет работать?
Возможно, вы имеете в виду hash_set, где набор реализован с использованием хэш-таблиц. Вам нужно будет предоставить хеш-функцию, чтобы узнать, какое место для хранения вашего элемента. Эта реализация идеально подходит, если вы хотите быстро найти элемент. Однако, если важно, чтобы ваши элементы были сохранены в определенном порядке, тогда реализация дерева более подходит, поскольку вы можете перемещаться по предзаказу, по порядку или по порядку.
Насколько я знаю, std :: set - это упорядоченный контейнер. Если его BST может быть заказан? – Shasha99