freeCodeCamp/guide/russian/cplusplus/set/index.md

94 lines
4.6 KiB
Markdown
Raw Normal View History

2018-10-12 20:00:59 +00:00
---
title: Set
localeTitle: Задавать
---
Сложная структура данных в c ++ определяется так же, как набор определяется в контексте математики.
Более формально говоря, наборы - это тип ассоциативных контейнеров, в которых каждый элемент должен быть уникальным.
* Значение элемента не может быть изменено после его ввода, хотя удаление элемента и вставка нового элемента разрешены так же, как мы делаем в математике.
* Установка структуры данных может быть использована для моделирования, ну, сама устанавливает. Легко найти пересечения, союзы и т. Д.
* Подобно вектору, но допускаются только уникальные значения.
* Устанавливает элементы в порядке возрастания, когда вы вставляете элементы в набор.
Файл заголовка, необходимый для использования установленной структуры данных, «установлен». т.е. `#include<set>` должен быть в вашем коде, чтобы вы могли использовать установленную структуру данных.
**Pro tip** : - Используйте `#include<bits/stdc++.h>` чтобы включить все структуры и функции данных C ++ вместо их добавления по одному.
Некоторые из функций, которые могут выполняться с набором: -
1. begin () - возвращает итератор в первый элемент в наборе
2. end () - возвращает итератор к теоретическому элементу, который следует за последним элементом в наборе
3. size () - возвращает количество элементов в наборе
4. max\_size () - возвращает максимальное количество элементов, которые может содержать набор
5. empty () - Возвращает, является ли набор пустым
6. erase (const g) - удаляет значение 'g' из набора
7. clear () - Удаляет все элементы из набора
Давайте посмотрим на пример:
```cpp
#include <iostream>
#include <set>
#include <iterator>
using namespace std;
int main()
{
set <int> 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 <int> :: 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), "<<num<<" element is removed\n\n";
cout<<"Contents of the modified set:\t";
for (itr = myset.begin(); itr != myset.end(); ++itr)
{
cout << '\t' << *itr;
}
cout << endl;
return 0;
}
```
\`\` \`Каст Выход:- Содержимое myset: 9 20 30 65 80
Содержание myset после удаления элементов менее 30: 30 65 80
После выполнения myset.erase (80) удаляется 1 элемент
Содержание модифицированного набора: 30 65 \`\` \`
\### Источники
1. [Вундеркинды для вундеркиндов](https://www.geeksforgeeks.org/set-in-cpp-stl/)