94 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			94 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								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/)
							 |