Una tabella hash viene utilizzata per costruire un set non ordinato in cui i valori vengono convertiti in indici della tabella hash per garantire che l'inserimento di un valore sia sempre assegnato in modo casuale. Il fatto è che operano abbastanza bene e normalmente danno un'operazione di ricerca temporale costante. Tutte le funzioni sul set non ordinato di solito richiedono un tempo costante O (1). Sebbene, nella situazione peggiore, possano affrontare il tempo lineare O (N) in base all'algoritmo di hash operativo.
Il set non ordinato può includere chiavi di qualsiasi tipo, siano esse predefinite o definite dall'utente. Ma ogni volta che dichiariamo le chiavi delle strutture di dati definite dall'utente, dobbiamo quindi indicare il metodo di confronto utilizzato per confrontare le chiavi.
Differenza tra set e set non ordinato
Un set è una raccolta ordinata di chiavi distinte. Ma un set non ordinato è una raccolta di chiavi che potrebbero essere disposte in qualsiasi sequenza. L'implementazione di SET come struttura ad albero bilanciata consente di conservare l'ordine dei componenti. Le operazioni di impostazione hanno una complessità del tempo O (log n), ma un set non ordinato ha un O (1). Numerosi metodi sono definiti per il set non ordinato. Ma quelli più popolari sono le dimensioni e il metodo vuoto per l'archiviazione, trovando il valore della chiave e inserendo e rimozione per la configurazione. Solo le chiavi distinte sono supportate dal set non ordinato; Per le chiavi duplicate, può essere impiegato un multiset non ordinato.
Funzioni utilizzate per set non ordinati
Il set non ordinato ha i seguenti metodi:
L'esecuzione di diverse funzioni non ordinate nel linguaggio C ++ è trattata in questo articolo.
Esempio 1:
Il tempo medio di elaborazione per le funzioni find (), insert () e cancella () è costante. Se la chiave non è presente nel set definito, il metodo find () fornisce un iteratore alla funzione terminale (); Altrimenti, restituisce un iteratore all'attributo chiave. Per acquisire la chiave facendo riferimento ai valori della chiave con l'operatore *, l'iteratore funge da puntatore agli attributi chiave. Quella che segue è un'istanza di una dichiarazione per la ricerca (), insert () e le funzioni di iterazione in un set non ordinato.
#includereIncorporiamo il file di intestazione all'inizio di questo codice. Quindi, inseriamo lo spazio dei nomi standard come std. Quindi, invochiamo la funzione principale (). All'interno di questa funzione, dichiariamo il set non ordinato. Qui, utilizziamo un set non ordinato per organizzare gli elementi dei set. Passiamo la stringa come parametro della funzione set non ordinata. Successivamente, inseriamo le diverse stringhe nei set. Passiamo le numerose stringhe come argomenti della funzione insert (). Quindi, specifichiamo il valore della chiave utilizzando la parola chiave "chiave". Il metodo find () viene utilizzato nel passaggio successivo. Questa funzione viene applicata per trovare la stringa richiesta del set.
Utilizziamo il metodo end () per terminare le stringhe. Questa funzione restituisce l'iteratore ogni volta che la chiave non esiste nel set. Il comando "cout" viene applicato per stampare l'istruzione. Quindi, inizializziamo di nuovo un valore per l'attributo "chiave". Troviamo il valore di un attributo nella stringa utilizzando la funzione find () e termina la stringa con l'aiuto del metodo end (). Applichiamo la dichiarazione "cout" per mostrare il risultato. Itegniamo sull'intero set e stampiamo il contenuto del set utilizzando l'istruzione "Cout". Usiamo il metodo set non ordinato e dichiariamo l'iteratore come "io". Il ciclo "per" è impiegato.
Innanzitutto, inizializziamo una variabile e quindi utilizziamo la funzione Begin () per avviare la stringa specificata. Inoltre, definiamo la condizione del ciclo. La funzione end () si chiama. Il valore dell'iteratore è incrementato di 1. Alla fine, l'istruzione "Cout" viene utilizzata per mostrare il valore dell'iteratore.
Esempio 2:
In questo caso, eseguiremo un codice in cui dichiariamo un elenco di valori diversi, e quindi troviamo tutti i duplicati da tale elenco mediante l'uso della funzione set non ordinata.
#includereQui, includiamo la biblioteca. Nel passaggio successivo, utilizziamo lo spazio dei nomi standard come STD. Usiamo il metodo Print () per mostrare il replicato nell'array definito mediante l'uso di un set non ordinato. Forniamo un array e una variabile per stupire l'intero come argomenti del metodo PrintDuplicates ().
Ora, dichiariamo i set non ordinati per acquisire e salvare i duplicati. Viene utilizzata la funzione set non ordinata. Passiamo l'intero come parametro. Quindi, utilizziamo un'altra funzione set non ordinata per trovare gli elementi duplicati. Qui, applichiamo il ciclo "per". Dichiariamo una variabile del ciclo "per". Quindi, specifichiamo la condizione. Successivamente, aumentiamo il valore "J". Chiamiamo la funzione Find () per trovare l'elemento definito nell'array. Passiamo l'elemento specifico come argomento di questa funzione. Se l'articolo richiesto è già presente nell'array, inseriamo quell'elemento nel set duplicato.
Mostriamo i valori duplicati dell'array usando l'istruzione "cout". Dichiariamo la variabile "It" dell'iteratore per il set non ordinato. Viene applicato il ciclo "per". Quindi, i metodi Begin () e End () vengono utilizzati nel ciclo "per". Successivamente, chiamiamo la funzione principale (). Inizializziamo una variabile "a". Quindi, definiamo gli elementi per l'array e questo array è memorizzato in una variabile "A". Troviamo le dimensioni dell'array richiesto utilizzando il metodo sizeof (). Passiamo l'array come parametro di questa funzione.
Dividiamo il valore risultante per la dimensione dei numeri interi. Il valore che otteniamo dopo la divisione è memorizzato in una variabile "B". Visualizziamo i valori duplicati dell'array con l'aiuto del metodo printDuplicate (). Alla fine, utilizziamo il comando "return 0".
Esempio 3:
Un elemento di dati può essere aggiunto al contenitore set non ordinato utilizzando la funzione Libreria modello standard C ++ integrata - la funzione insert (). Ogni elemento in un set non ordinato ha un valore particolare e viene aggiunto solo se non è disponibile nel set. Poiché il contenitore impiega diversi metodi di hashing, l'inserimento viene effettuato automaticamente nel punto che soddisfa in modo ottimale il requisito. Di conseguenza, la dimensione del contenitore è considerevolmente migliorata dal numero di articoli recuperati.
Parametri di Insert () Metodo:
Il metodo restituisce una coppia, con la coppia :: prima configurato in un iteratore che si riferisce al nuovo elemento aggiornato o al componente corrispondente già presente nel set. Se viene aggiunto un nuovo elemento di dati, la coppia :: secondo componente nella coppia viene regolata su true; Altrimenti, è specificato come falso se è già presente un articolo identico.
Il seguente programma dimostra la funzione di cui sopra:
#includerePrima di tutto, integriamo i file di intestazione richiesti. È responsabile delle funzionalità di input e output. Il file di intestazione contiene la dichiarazione delle stringhe. Il terzo contiene tutti i set non ordinati. Utilizziamo lo spazio dei nomi standard come std. Quindi, iniziamo la codifica all'interno del corpo della funzione principale () dopo aver chiamato la funzione principale (). Utilizziamo il set di stringhe non ordinato.
Qui, definiamo gli elementi del mio set. Specifichiamo i due giorni della settimana. Ora indichiamo il valore della stringa che vogliamo essere inseriti nel set richiesto. Inseriamo quella stringa usando il metodo insert (). La dichiarazione "Cout" è impiegata per mostrare il testo "Il set dei giorni feriali è". Usiamo ancora una volta l'istruzione "cout" prima di inserire il comando "return 0". Questa dichiarazione "cout" stampa tutti i nomi dei giorni feriali.
Conclusione
L'uso delle funzioni set non ordinate C ++ è trattato in questo articolo. Abbiamo implementato i numerosi codici sul software Devc ++ in cui abbiamo utilizzato molte funzioni relative ai set non ordinati. I set non ordinati sono strutture di dati che possono contenere componenti diversi in qualsiasi ordine e fornire un accesso efficiente a elementi specifici in base al loro valore. In primo luogo, abbiamo utilizzato le molteplici funzioni di set non ordinate per esaminare come funziona il codice. Usando il metodo find (), abbiamo identificato un determinato elemento all'interno del set. Con l'aiuto della funzione end (), abbiamo terminato il set non ordinato. Nella seconda illustrazione, abbiamo costruito un array contenente vari numeri interi. Valori sia ripetuti che non ripetuti sono inclusi nell'array. Per trovare i valori duplicati nell'array specificato, abbiamo applicato il metodo find (). Il metodo insert () è stato utilizzato nell'ultimo esempio per aggiungere un valore al set non ordinato richiesto.