Funzioni di set C ++

Funzioni di set C ++
"Potremmo utilizzare le numerose caratteristiche e strumenti benefici di C ++ per aiutare nella programmazione dinamica. Una di queste parti è un set che si trova nella libreria di modelli standard, che offre un meccanismo per archiviare efficacemente i dati in modo organizzato. In questo tutorial di set C ++, parleremo di tutte le basi delle funzioni di set C ++.

Le strutture di C ++ STL per tenere gli oggetti in un ordine specifico sono chiamate set. Un set deve avere componenti unici. Ogni elemento in un set può essere identificato dal suo valore individualmente, quindi servono come chiavi. In C ++, possiamo aggiungere ed eliminare gli elementi da un set; Tuttavia, non possiamo modificare i valori dei componenti perché sono statici dopo essere stati inseriti nel set."

Definizione set in c++

Come è già affermato, i set sono proprio il tipo di contenitori di libreria di modelli standard utilizzati in C ++ per archiviare gli articoli in modo accurato. I set possono essere sottoposti solo ai metodi di inserimento e cancellazione. In un oggetto set tipo, gli elementi vengono organizzati automaticamente in un ordine specificato. Non siamo in grado di modificare o aggiornare i valori dei componenti già esistenti in un set perché gli elementi nei contenitori sono immutabili. Definendolo con precisione, un elemento in un set funge da chiave per se stesso. I set sono abilitati solo per contenere un valore specifico.

Quando utilizzare i set?

Nella programmazione competitiva, i set sono ampiamente impiegati come contenitori. Quando è necessario archiviare gli articoli in modo classificato, potremmo prendere in considerazione l'utilizzo di set, ma tenere presente che le serie non consentono la memoria di valori ripetuti. Una volta immesso, il valore non può essere modificato.

Implementazione dei set

Per interagire con i set, i 2 file di intestazione principale dovrebbero essere integrati. I set sono accessibili utilizzando iteratori. Integra #include e #include nel tuo codice. Abbiamo la scelta di utilizzare solo questo file di intestazione anziché questi due. La biblioteca funge da sostituto dei file di intestazione sopra menzionati. Possiamo utilizzare questo solo file di intestazione perché incorpora tutti i file di intestazione. Gli alberi di ricerca binari vengono utilizzati per definire i set a livello interno.

Imposta le caratteristiche in C++

Di seguito sono riportati alcuni degli attributi set comuni in C ++:

  • La caratteristica dell'unicità: in C ++, ogni membro di un set deve essere distinto; Gli articoli ripetuti non sono accettati. Di conseguenza, i set in C ++ non supportano la ripetizione.
  • La caratteristica di essere organizzata: i componenti di un contenitore set vengono generalmente salvati in modo organizzato.
  • La capacità di essere immutabili: una volta che gli articoli vengono salvati in un set, non possono essere modificati. Di conseguenza, mentre sono consentite aggiunte e rimozione, l'aggiornamento o la modifica dei componenti esistenti del set non è richiesto.
  • L'attributo dell'esecuzione interna: un BST viene utilizzato per creare logicamente un set in C++.
  • La caratteristica dell'indicizzazione: poiché la libreria di modelli standard C ++ non fornirà l'indicizzazione, i set in C ++ hanno anche la funzione di non essere indicizzato.

Sintassi di set

Di seguito è riportato la dichiarazione STD :: SET dalla libreria "SET":

Parametri

  • Chiave: tipo di componente rappresentato nella chiave. Qualsiasi altra struttura di dati, come un tipo definito dall'utente, potrebbe essere utilizzata al posto della chiave.
  • Allocatori: questi saranno gli oggetti incaricati di incorporare l'amministrazione dell'archiviazione. Ogni volta che vogliamo separare l'allocazione ed eseguire la creazione in 2 fasi, dobbiamo utilizzare la std :: allocatore. Quando l'eliminazione sequenziale e la memoria dinamica vengono eseguite in 2 fasi, viene anche impiegata. Il valore di ritorno per l'argomento del tipo Allocatore in tutti i contenitori è std :: allocatore. Gli operatori nuovi e cancellati sono tutto ciò che l'allocatore di base impiega per acquisire e alleviare lo stoccaggio.
  • Confrontare: Un attributo binario con due parametri con un tipo simile ai componenti e un valore di restituzione bool. Se si considera che un elemento venga prima della chiave nel sequenziamento, la funzione definisce, l'istruzione comp (x, y), dove comp sarebbe un oggetto di questo tipo e xey sono valori chiave, deve quindi generare vero. Questa affermazione viene utilizzata dall'oggetto set per valutare la disposizione dei componenti all'interno del contenitore, nonché se due chiavi dell'articolo sono uguali (confrontandoli istintivamente: sono uguali se! comp (x, y) &&!comp (y, x)).

Un contenitore set può contenere componenti unici. Questo potrebbe essere un oggetto funzione o un puntatore di funzione. Meno è il valore predefinito e fornisce gli stessi risultati dell'uso dell'espressione inferiore a

Funzioni su set

In C ++, i set potrebbero essere sottoposti a un'ampia varietà di operazioni. Valutiamo alcune delle principali tecniche di set.

  • Inizio () funzione: un iteratore che punta al primo elemento del set viene restituito da questa funzione.
  • Funzione end (): questo metodo fornisce un iteratore che punta al punto adiacente all'ultimo elemento dell'insieme nell'approccio teorico.
  • Funzione vuota (): viene utilizzato per determinare se il set è vuoto.
  • Metodo di dimensione (): fornisce il numero totale di elementi in un set.
  • Funzione max_size (): recupera il limite superiore degli elementi di un set o il valore più alto che un set può ospitare.
  • Rbegin (): questa funzione, al contrario per iniziare (), fornisce un iteratore invertito che indica il valore finale di un set.
  • Rend (): a differenza della funzione end (), fornisce un iteratore invertito che indica logicamente il luogo prima dell'ultimo valore di un set.
  • Funzione cancella (): se utilizzato su un set, elimina l'elemento nella posizione indicata dal puntatore specificato nel parametro.
  • Cancella (const_n): questo metodo rimuove immediatamente il valore "n" da un set quando viene fornito come argomento.
  • Inserisci (const n): questo metodo aggiunge un nuovo membro, "n", al set.
  • Trova (n): trova il set per l'elemento definito e fornisce un iteratore che si riferisce alla posizione del componente identificato. Produce un iteratore che punta alla fine dell'oggetto che non può essere recuperato.
  • Conteggio (const n): questa funzione conta il numero di volte in cui il valore fornito "n" appare e fornisce 0 o 1 a seconda che l'articolo sia stato recuperato o meno.
  • Funzione Clear (): elimina ogni elemento da un set.

Esempio n. 1

In questo caso, un set verrà inizializzato. In C ++, specifichiamo i diversi tipi di elementi che verranno posizionati in un set quando viene creata. I punti dati di un set sono in genere archiviati in ordine crescente. La funzione maggiore potrebbe essere utilizzata per mantenere i dati in ordine decrescente. Set vuoto

  • Usando valori
  • Usando un array.
  • Usando un altro set.

Queste sono numerose tecniche per dichiarare un set.

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

set1;
impostatoS2;
impostato S3 = 62, 17, 25, 81;
impostato S4 (S3);
int ar [] = 15, 24, 75, 51;
Imposta S5 (AR, AR+4);
SET :: iteratore I;
per (auto i = s5.inizio(); io!= S5.end (); i ++)

cout<
Ritorno 1;

I file di intestazione e sarebbero integrati per primi. Dopo questo, lo spazio dei nomi standard verrà utilizzato. La funzione principale () verrà chiamata. Il primo set verrà inizializzato e sarà un set vuoto in quanto non contiene alcun elemento. Il secondo set verrà dichiarato come un set vuoto in ordine decrescente. Il nuovo set verrà inizializzato aggiungendo diversi numeri interi. Questo set contiene quattro elementi.

Inoltre, inizializzamo un nuovo set chiamato "S4" mediante un altro set, "S3". Abbiamo fornito i valori di S3 come parametri di S4. Ora il set sarà dichiarato da un array. Specifichiamo i valori nell'array e quindi salviamo quei valori in una variabile "A". Il quinto set contiene i 4 valori dell'array. Successivamente, definiremo l'iteratore per questi set richiesti. Acquiseremmo i valori di tutti gli insiemi mediante l'uso del loop "per".

Esempio n. 2

Questa illustrazione dimostra come funzionano i metodi di inserimento e eliminazione del set.

#includere
Utilizzo dello spazio dei nomi std;
int main ()

Imposta S1;
S1.inserire (22);
S1.inserire (33);
S1.inserire (56);
S1.inserire (9);
S1.inserire (67);
S1.inserire (47);
S1.inserire (88);
Set :: iterator P_1, P_2, P_3;
cout<< " The values of the set are: \n" ;
per (p_1 = s1.inizio() ; P_1 != S1.FINE() ; p_1 ++)

cout<< *p_1 << " " ;

cout<impostato S2 (S1.inizio (), s1.FINE() );
impostato :: iteratore I;
P_2 = S1.Trova (22);
p_3 = s1.Trova (88);
S1.cancella (p_2, p_3);
cout<< " The values of the set after using erase() function: \n " ;
per (p_1 = s1.inizio() ; P_1 != S1.FINE() ; p_1 ++)

cout<< *p_1 << " ";

cout<cout<< " The values of second set are: \n" ;
per (i = s2.inizio() ; io != S2.FINE() ; I ++)

cout<< *i<< " ";

restituzione 0;

Le biblioteche richieste saranno incluse all'inizio del programma. Lo spazio dei nomi standard verrà aggiunto come "std". Ora il metodo principale () verrà invocato. Dichiariamo set diversi. Chiamiamo il metodo insert () per aggiungere i valori nel set. Verranno creati e chiamati diversi suggerimenti "P_1", "P_2" e "P_3". L'iteratore sarà dichiarato come questi puntatori. L'istruzione "Cout" verrà utilizzata per rappresentare la linea "I valori del set sono". Ora il ciclo "per" verrà utilizzato per mostrare tutti i valori inseriti del set.

L'inizio () verrebbe chiamato per avviare i valori del set da stampare e i metodi end () verrebbero applicati per terminare i valori del set. Questi metodi saranno invocati all'interno del ciclo "per". Il costruttore del primo puntatore sarà definito all'interno dell'istruzione "cout". Ora faremo un altro set organizzando i valori in ordine decrescente. Gli elementi del primo e del secondo set richiesti sono gli stessi.

La funzione find () verrebbe chiamata sugli elementi del primo set definito. Questa funzione ottiene i valori definiti dal set. Ora applichiamo il metodo Cancella () per eliminare i valori dal primo set. I valori che verranno eliminati sono da 22 a 88. L'istruzione "Cout" verrà utilizzata per mostrare il testo "i valori dell'insieme dopo l'uso della funzione ERASE ()". Per mostrare i valori, verrà utilizzato il loop "per".

Quindi il costruttore del primo puntatore verrà dichiarato. Ora utilizziamo il ciclo "per" per stampare gli elementi del secondo set richiesto. L'istruzione "Cout" stampa la riga "I valori del secondo set sono". Prima di aggiungere il comando "return 0", verrà creato il costruttore della variabile iteratore.

Esempio n. 3

In questo esempio, verranno utilizzate due funzioni, trova () e cancella,. Se l'articolo viene identificato, il metodo Find () produce un iteratore che lo fa riferimento; Altrimenti, fornisce un iteratore che si riferisce all'estremità del set. Gli elementi nel set rimuoveranno con l'aiuto della funzione Cancella ().

#includere
Utilizzo dello spazio dei nomi std;
int main ()

sets_1;
S_1.inserire (45);
S_1.inserire (12);
S_1.inserire (17);
S_1.inserire (89);
S_1.inserire (25);
S_1.inserire (14);
S_1.inserire (78);
S_1.inserire (34);
SET :: iteratore I;
cout<<"Values of required set: \n";
per (i = s_1.inizio() ; io != S_1.FINE() ; I ++)

cout<<*i<< " ";

cout<cout<< " Updated set \n " ;
S_1.cancella (S_1.inizio (), s_1.trova (25));
per (i = s_1.inizio() ; io!= S_1.FINE() ; I ++)
cout<< *i<< " " ;
cout<cout<< " lower bound of 45 is: \n" ;
cout<< *s_1.lower_bound( 45 )<cout<< " lower bound of 17 is: \n" ;
cout<< *s_1.lower_bound( 17 ) <cout<< " upper bound of 45 is: \n" ;
cout<< *s_1.upper_bound( 45 ) <cout<< "upper bound of 17 is: \n" ;
cout<< *s_1.upper_bound( 17 ) <restituzione 0;

Il programma includerà le biblioteche pertinenti all'inizio chiamate . Verrà introdotto lo spazio dei nomi standard come "std". Verrà ora fatto un riferimento alla funzione principale (). Specifica prima il set. Per includere i valori nel set, useremmo la funzione insert (). L'iteratore sarà identificato come "io"; I valori del set appropriato verranno visualizzati utilizzando il comando "cout". Il ciclo "per" verrà ora utilizzato per visualizzare tutti i valori inseriti del set.

La funzione Begin () verrebbe utilizzata per iniziare a stampare i valori del set e il metodo end () verrebbe utilizzato per terminare la stampa dei valori del set. Questi metodi definiti sarebbero impiegati all'interno del ciclo "per". La dichiarazione "Cout" dichiarerà il costruttore dell'iteratore. Il testo "set aggiornato" verrà visualizzato utilizzando l'istruzione Cout. I componenti del primo set verrebbero determinati utilizzando la funzione find (). I valori definiti sono ottenuti da questa funzione dal set.

Per rimuovere i valori dal primo set, ora utilizzeremo il metodo cancella (). Verranno eliminati fino a 25 valori. Usando un ciclo "per", verranno presentati i numeri interi rimanenti. La dichiarazione "Cout" fornirà una dichiarazione del costruttore dell'iteratore. Verranno eseguite le operazioni limite e superiori inferiori sui valori del set. I valori 45 e 17 del set verrebbero forniti alla funzione di limite inferiore (), che userebbe quindi il comando "cout" per stampare il risultato. Questi valori simili nel set verranno trattati con un metodo limite superiore (). Il valore del risultato verrà stampato dal comando "cout". Il comando "return 0" verrà aggiunto alla fine.

Conclusione

Abbiamo discusso delle funzioni di set C ++ in questa guida. Simile ad altri pacchetti di libreria standard, il set C ++ è cruciale. Rende più facile per gli sviluppatori estrarre e manipolare i valori. Abbiamo implementato tre programmi. L'inizializzazione dei set viene gestita nel primo esempio. Il secondo visualizza le aggiunte e le rimozioni di valori dall'insieme. Nell'istanza finale, scegliamo alcuni valori dal set e quindi rimuoviamoli.