Un set este un tip de date și o structură în informatică , care este o implementare a setului de obiecte matematice .
Setul de tipuri de date vă permite să stocați un număr limitat de valori de un anumit tip, fără o anumită ordine. Repetarea valorilor nu este, în general, permisă. Cu excepția faptului că o mulțime este finită în programare, ea corespunde în general conceptului de mulțime matematică. Pentru acest tip, limbajele de programare oferă de obicei operații standard.
În funcție de ideologie, diferite limbaje de programare tratează un set ca pe un tip de date simplu sau complex .
În Pascal, un set este un tip de date compus care stochează informații despre prezența într-un set de obiecte de orice tip numărabil. Puterea de acest tip determină dimensiunea setului - 1 bit per element. Turbo Pascal are o limită de 256 de elemente, alte implementări slăbesc această limită.
Un exemplu de lucru cu seturi:
tip {definiți tipul enumerat de bază și tipul intervalului pentru seturi} culori = ( roșu , verde , albastru ) ; numere mici = 0 .. 10 ; {define sets from our types} colorset = set de culori ; set de numere = set de numere mici ; {nu trebuie să setați tipul separat} anothernumberset = set de 0 .. 20 ; {declararea variabilelor de tip set} var nset1 , nset2 , nset3 : numberset ; cset : set de culori ; începe nset1 := [ 0 , 2 , 4 , 6 , 8 , 10 ] ; {set as a set constructor} cset := [ roșu , albastru ] ; {simpla enumerare a elementelor} nset2 := [ 1 , 3 , 9 , 7 , 5 ] ; {ordinea de enumerare este neimportantă} nset3 := [] ; {set gol} include ( nset3 , 7 ) ; {add element} exclude ( nset3 , 7 ) ; {element exclus} nset1 := [ 0 .. 5 ] ; {posibil să setați elemente după interval} nset3 := nset1 + nset2 ; {unire} nset3 := nset1 * nset2 ; {intersecție} nset3 := nset1 - nset2 ; {diferență} if ( 5 în nset2 ) sau {test for element occurrence} ( verde în cset ) atunci {…} end .Un exemplu de program care utilizează structura setată pentru a implementa directoare:
vector < șir > vec ; void f ( vector < șir > vec1 , nivel int ) { set < șir > set ; pentru ( int i = 0 ; i < vec1 . dimensiune (); i ++ ) { intk = vec1 [ i ] . găsi ( '/' ); dacă ( k != șir :: npos ) { șir s1 = vec1 [ i ]. substr ( 0 , k ); set . inserare ( s1 ); } } pentru ( set < șir > :: iterator it = set . begin (); it != set . end (); it ++ ) { vector < șir > vec2 ; pentru ( int i = 0 ; i < vec1 . dimensiune (); i ++ ) { intk = vec1 [ i ] . găsi ( '/' ); if ( k != string :: npos && vec1 [ i ]. substr ( 0 , k ) == ( * it )) { șir s1 = vec1 [ i ]; s1 . șterge ( 0 , k + 1 ); vec2 . push_back ( s1 ); } } pentru ( int i = 0 ; i < nivel ; i ++ ) { cout << '+' ; } cout << * it << endl ; f ( vec2 , nivel + 1 ); } } int main () { int n ; cin >> n ; pentru ( int i = 0 ; i < n ; i ++ ) { șir s ; cin >> s ; s += '/' ; vec . push_back ( s ); } f ( vec , 0 ); returnează 0 ; }Un set în JavaScript este o structură de date folosită pentru a stoca un set de valori care nu au indici sau chei (dar în interiorul structurii de date trebuie să aibă o ordine, de exemplu, un index într-o matrice, totuși, un set rezumate noi din această caracteristică de implementare).
Set este o colecție pentru stocarea mai multor valori și fiecare valoare poate apărea o singură dată.
Metode
set.has(item) - returnează adevărat dacă elementul este în colecție, în caz contrar - false;
set.add(item) - adaugă element la set, returnează set. Dacă încercați să adăugați unul existent, nu se va întâmpla nimic;
set.clear() - șterge setul;
set.delete(item) - elimină un element din set, returnează true dacă a fost acolo, false în caz contrar.
Iterarea peste elemente
realizat prin for..of sau forEach
„utilizați strict” ; let set = set nou ([ 'primul' , 'al doilea' , 'al treilea' ]); pentru ( lasă valoarea setului ) { _ consola . jurnal ( valoare ); }; // primul, al doilea, al treilea // la fel set . forEach (( valoare , valoare din nou , set ) => { consola . jurnal ( valoare ); }); // primul, al doilea, al treileaValoarea din argumente se repetă pentru compatibilitate cu Map , unde funcția .forEach are și trei argumente. Dar în set, primele două se potrivesc întotdeauna și conțin următoarea valoare a setului
Da un exemplu
const union = ( s1 , s2 ) => set nou ([... s1 , ... s2 ]); // set de toate valorile s1 și s2 const intersection = ( s1 , s2 ) => set nou ( [... s1 ]. filtru ( v => s2 . are ( v )) ); // set de valori care sunt atât în s1 cât și în s2 diferență constantă = ( s1 , s2 ) => set nou ( [... s1 ]. filtru ( v => ! s2 . are ( v )) ); // set de valori care sunt în s1 dar nu în s2 const complement = ( s1 , s2 ) => diferență ( s2 , s1 ); // setul de valori scurte este în s2, dar nu în s1 const cities1 = set nou ([ 'Beijing' , 'Kiev' ]); const cities2 = set nou ([ 'Kiev' , 'Londra' , 'Bagdad' ]); operatii const = [ unire , intersectie , diferenta , complement ]; const rezultate = operatii . harta ( operațiune => ({ [ operațiune . nume ] : operațiune ( orașe1 , orașe2 ) })); consola . dir ({ orase1 , orase2 }); consola . dir ( rezultate );Setați în depozitul Github HowProgrammingWorks/Set
Tipuri de date | |
---|---|
Ininterpretabil | |
Numeric | |
Text | |
Referinţă | |
Compozit | |
abstract |
|
Alte | |
subiecte asemănătoare |
Structuri de date | |
---|---|
Liste | |
Copaci | |
Contează | |
Alte |