--- title: Set localeTitle: Задавать --- Сложная структура данных в c ++ определяется так же, как набор определяется в контексте математики. Более формально говоря, наборы - это тип ассоциативных контейнеров, в которых каждый элемент должен быть уникальным. * Значение элемента не может быть изменено после его ввода, хотя удаление элемента и вставка нового элемента разрешены так же, как мы делаем в математике. * Установка структуры данных может быть использована для моделирования, ну, сама устанавливает. Легко найти пересечения, союзы и т. Д. * Подобно вектору, но допускаются только уникальные значения. * Устанавливает элементы в порядке возрастания, когда вы вставляете элементы в набор. Файл заголовка, необходимый для использования установленной структуры данных, «установлен». т.е. `#include` должен быть в вашем коде, чтобы вы могли использовать установленную структуру данных. **Pro tip** : - Используйте `#include` чтобы включить все структуры и функции данных C ++ вместо их добавления по одному. Некоторые из функций, которые могут выполняться с набором: - 1. begin () - возвращает итератор в первый элемент в наборе 2. end () - возвращает итератор к теоретическому элементу, который следует за последним элементом в наборе 3. size () - возвращает количество элементов в наборе 4. max\_size () - возвращает максимальное количество элементов, которые может содержать набор 5. empty () - Возвращает, является ли набор пустым 6. erase (const g) - удаляет значение 'g' из набора 7. clear () - Удаляет все элементы из набора Давайте посмотрим на пример: ```cpp #include #include #include using namespace std; int main() { set myset; //an empty set container. Note that size of the set need not be declared, similar to vector. // insert elements in random order myset.insert(65); myset.insert(30); myset.insert(80); myset.insert(20); myset.insert(9); myset.insert(9); // only one 9 will be added to the list. // printing set myset set :: iterator itr; //an iterator is like a pointer. cout << "\nThe contents of myset : "; for (itr = myset.begin(); itr != myset.end(); ++itr) { cout << '\t' << *itr; } cout << endl; // remove all elements up to 65 in myset from the beginning:- cout << "\nContents of myset after removal of elements less than 30 : "; myset.erase(myset.begin(), myset.find(30)); for (itr = myset.begin(); itr != myset.end(); ++itr) { cout << '\t' << *itr; } // remove element with value 50 in myset int num = myset.erase(80); //returns true (and deletes) if 80 is there in the list else returns 0. cout<<"\n\n After doing myset.erase(80), "<