94 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			94 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								title: Set
							 | 
						||
| 
								 | 
							
								localeTitle: Conjunto
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								Una estructura de datos de conjunto en c ++ se define de la misma manera que un conjunto se define en el contexto de las matemáticas.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Más formalmente hablando, los Conjuntos son un tipo de contenedores asociativos en los que cada elemento tiene que ser único.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								*   El valor del elemento no se puede modificar una vez que se ingresa, aunque se permite eliminar un elemento e insertar un nuevo elemento, de la misma manera que lo hacemos en matemáticas.
							 | 
						||
| 
								 | 
							
								*   Establecer la estructura de datos se puede utilizar para modelar, bueno, se configura a sí mismo. Se hace fácil encontrar intersecciones, uniones etc.
							 | 
						||
| 
								 | 
							
								*   Similar al vector, pero solo se permiten valores únicos.
							 | 
						||
| 
								 | 
							
								*   El conjunto organiza los elementos en orden creciente a medida que se insertan elementos en el conjunto.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								El archivo de encabezado requerido para usar la estructura de datos establecida es 'conjunto'. es decir, `#include<set>` debe estar allí en su código para que pueda utilizar la estructura de datos establecida.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								`#include<bits/stdc++.h>` **profesional** : use `#include<bits/stdc++.h>` para incluir todas las funciones y estructuras de datos de C ++, en lugar de agregarlas una por una.  
							 | 
						||
| 
								 | 
							
								Algunas de las funciones que se pueden realizar con un conjunto:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								1.  begin (): devuelve un iterador al primer elemento del conjunto
							 | 
						||
| 
								 | 
							
								2.  end (): devuelve un iterador al elemento teórico que sigue al último elemento del conjunto
							 | 
						||
| 
								 | 
							
								3.  size () - Devuelve el número de elementos en el conjunto
							 | 
						||
| 
								 | 
							
								4.  max\_size (): devuelve el número máximo de elementos que puede contener el conjunto
							 | 
						||
| 
								 | 
							
								5.  vacío () - Devuelve si el conjunto está vacío
							 | 
						||
| 
								 | 
							
								6.  borrar (const g): elimina el valor 'g' del conjunto
							 | 
						||
| 
								 | 
							
								7.  clear () - Elimina todos los elementos del conjunto
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Veamos un ejemplo:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```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; 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								 } 
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\`\` \`cpp Salida:- Los contenidos de myset: 9 20 30 65 80.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Contenido de myset después de la eliminación de elementos menores de 30: 30 65 80
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Después de hacer myset.erase (80), se elimina 1 elemento.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Contenido del conjunto modificado: 30 65. \`\` \`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								\### Fuentes
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								1.  [Geeks para Geeks](https://www.geeksforgeeks.org/set-in-cpp-stl/)
							 |