set stl
Apreneu ràpidament SET A STL amb exemples senzills.
Farem una ullada en profunditat al contenidor STL - Conjunts, aquí en aquest tutorial. Els conjunts són contenidors associatius amb elements únics en un ordre específic.
El valor d’un element del conjunt és també la clau que s’utilitza per accedir-hi. Tots els elements del conjunt han de ser únics. No podem modificar els elements del conjunt un cop inserits. Tot i això, podem inserir o eliminar els elements.
=> Consulteu aquí la sèrie completa d’entrenaments GRATU CTS de C ++
Què aprendreu:
CONJUNT A STL
Per implementar el conjunt, hem d’incloure la capçalera al nostre programa.
per què escolliu la pregunta de l'entrevista de proves de programari
#include
Podem declarar un conjunt de la següent manera:
set myset;
Per exemple,si volem un conjunt, el meu conjunt d’un element amb tipus enter, llavors podem declarar el conjunt com:
set myset;
Operacions en joc
El contenidor establert també admet operacions similars com un mapa que ja hem comentat. A continuació es detallen algunes de les operacions bàsiques admeses per set.
- començar : Retorna l'iterador al primer element del conjunt.
- final : Retorna l'iterador a l'element que segueix a l'últim element del conjunt.
- inserir : Insereix un element nou al conjunt.
L'operació d'inserció per al conjunt té tres variants:
-
-
- inserir (element): Això insereix directament l’element al conjunt i reordena el conjunt.
- inserir (posició, pista): Aquí especifiquem la posició per inserir l’element.
- insert (iterator.begin (), iterator.end ()): En aquesta variació, podem inserir directament l’interval al conjunt com una matriu o un altre conjunt.
-
- esborrar : Elimina un element del conjunt.
- mida : Retorna la mida del conjunt.
- mida_màxima : Retorna la mida màxima que pot contenir el conjunt.
- buit : Retorna si el conjunt està buit.
- clar : Elimina tots els elements del conjunt.
- trobar : Cerca un element del conjunt. Si es troba un element, torna l'iterador a aquest element del conjunt. Si no es troba, torna un iterador al final del conjunt.
A continuació es mostra un programa que demostra l’ús d’algunes funcions importants de SET.
#include #include #include using namespace std; int main() { set myset; myset.insert(140); myset.insert(130); myset.insert(160); myset.insert(120); cout<<'
Size of myset: '< Sortida:
Mida del meu conjunt: 4
El conjunt conjunt és: 120 130 140 160
Després d’inserir-ne 100, el myset definit és: 100 120 130 140 160
Després d’inserir la matriu arr, el myset definit és: 100 110 120 130 140 150 160
Després d'eliminar els elements inferiors a 130, configuri: 130 140 150 160
Com es mostra a la sortida anterior, creem un conjunt mitjançant una senzilla funció d'inserció.
A continuació, inserim l’element 100 al conjunt mitjançant una altra variant de la funció d’inserció passant la referència de l’iterador i el valor de l’element 100. Veiem que un cop feta la inserció, el conjunt es reordena i es manté l’ordre dels elements.
A continuació, inserim una matriu {110,150,150} mitjançant la funció d'inserció. Si veieu la sortida configurada després d’inserir una matriu, veiem que només s’introdueix un valor de 150 al conjunt. Això es deu al fet que tots els elements del conjunt són únics.
També mostrem la mida del conjunt. A continuació, mitjançant la funció de cerca trobem els elements que són inferiors a 130 i, a continuació, cridem a la funció esborrar per eliminar aquests elements. A continuació, mostrem el conjunt resultant.
Tot es tracta del contenidor definit. A continuació, analitzarem el multiset que extensió del contenidor definit.
Multiset
Un multiconjunt és un contenidor associatiu similar al conjunt de tots els aspectes, tret d’una diferència, és a dir, que diversos elements poden tenir el mateix valor.
La declaració per a diversos conjunts és la següent:
multiset mset;
Es pot declarar un conjunt múltiple d'elements enters com:
multiset mset;
Diverses operacions suportades per multiset són similars a les suportades per set.
Ara parlarem directament d’un exemple multiset que demostra l’operació que utilitza.
#include #include #include using namespace std; int main() { multiset myset; myset.insert(11); myset.insert(13); myset.insert(13); myset.insert(10); cout<<'
Size of myset: '< Sortida:
Mida del meu conjunt: 4
Després d’inserir quatre elements, el myset multiset és: 10 11 13
13
Després d’inserir-ne 15, el myset multiset és: 10 11 13 13 15
Després d’eliminar elements inferiors a 15, el meu conjunt: 15
A continuació es mostra la captura de pantalla de la sortida:
Com es mostra a la sortida anterior, inicialment introduïm quatre elements al multiconjunt dels quals dos són iguals. Però, a diferència d’un conjunt, aquests elements s’insereixen amb èxit al multiconjunt. A continuació, inserim un altre element 15 proporcionant la posició a través d'un iterador, que s'insereix amb èxit.
A continuació, trobem elements inferiors a 15 a la funció multiset i esborrar trucades en aquests elements. Finalment, mostrem el multiset.
com reproduir fitxers flash d’ona de xoc
Conjunt sense ordenar
Fins ara hem parlat de conjunts i multiconjunts en aquest tutorial.
Tot i que el conjunt és una seqüència ordenada de claus úniques, tenim un altre contenidor associatiu que s’anomena “conjunt no ordenat”, que és un conjunt de claus o elements que s’emmagatzemen en qualsevol ordre. Això vol dir que els elements del conjunt sense ordenar són ‘sense ordenar’.
De manera similar a un mapa sense ordenar, el conjunt sense ordenar també s’implementa mitjançant una taula de hash on les claus es comparen en índexs de la taula de hash. A causa de l'ús d'una taula de hash, no és possible mantenir l'ordre dels elements en contrast amb el conjunt que utilitza una estructura d'arbre equilibrada.
La capçalera per implementar un conjunt no ordenat és.
#include
Declarem un mapa no ordenat de tipus enter de la següent manera:
Unordered_set uset;
Les operacions admeses per unordered_set són similars a les que admet unordered_map, que es descriu als nostres tutorials al mapa.
A continuació es mostra un exemple que mostra les diverses operacions a unordered_set.
#include #include using namespace std; int main() { unordered_set uset; unordered_set :: iterator it; for(int i=0;i<5;i++){ uset.insert(i+2); } cout<<'
Size of uset: '< Sortida:
Mida de l’ús: 5
Els elements del conjunt no ordenat són: 99 39 6 5 26 4 3 13 2
Clau trobada = 13
umap bucket_count: 11
bucket_size: 2
A continuació es mostra la captura de pantalla de la sortida anterior.
Com es mostra a la sortida anterior, primer inserim 5 elements al conjunt no ordenat i, a continuació, inserim 4 elements més que demostren l’ús de les variacions de la funció d’inserció. A continuació, mostrem el contingut del conjunt no ordenat.
A continuació, fem servir la funció find per trobar si la tecla = 13 està present o no en el conjunt no ordenat.
Després d'això, demostrem dues funcions més 'bucket_count' i 'bucket_size'. Aquestes funcions estan relacionades amb la implementació interna del mapa no ordenat.
Aquest contenidor també admet les altres funcions iteradores i funcions com max_size, clear, esborrar, buidar, etc., que són similars a altres contenidors STL.
Conclusió
Amb això, hem arribat al final del nostre tutorial sobre SET a STL.
Esperem que els temes tractats com a part d’aquests tutorials STL us ajudin a conèixer millor STL i els seus diversos contenidors.
un dbms de codi obert és:
=> Llegiu aquí la popular sèrie de formació C ++.
Lectura recomanada
- Cua de prioritat a STL
- Llistes a STL
- MAPES A STL
- Piles i cues a STL
- Iteradors a STL
- Matrius a STL
- Cordes, parells i tuples a STL
- Algorismes a STL