Cosa sono i contenitori STL in C++

Cosa Sono I Contenitori Stl In C



In C++, STL (libreria di modelli standard), contenitori sono oggetti utilizzati per archiviare le collezioni degli altri oggetti. Funzionano in modo simile ai modelli di classe e supportano un gran numero di tipi di elementi e forniscono funzioni membro per accedere ai propri elementi direttamente o tramite iteratori.

Tipi di contenitori STL C++

In C++ esistono tre tipi di STL contenitori , di seguito elencati:







1: Contenitori sequenziali

In C++, i contenitori sequenziali ci consentono di archiviare elementi che possono essere recuperati in sequenza. Questi contenitori sono codificati come matrici o elenchi collegati di strutture di dati. Di seguito sono riportati alcuni tipi di contenitori sequenziali.



  • Vettore: Si tratta di un array di dimensioni dinamiche memorizzato in memoria in modo contiguo.
  • Riguardo a cosa: Rappresenta una coda a doppia estremità che supporta operazioni sia per l'inserimento che per l'eliminazione.
  • Vettore: È un array statico allocato durante la compilazione mantenendone le dimensioni fisse.
  • Elenco: È un elenco a doppio collegamento che esegue l'inserimento e l'eliminazione rapidi di elementi in qualsiasi punto dell'elenco.
  • Elenco di inoltro: È un elenco collegato singolarmente come un elenco ma puoi attraversarlo solo in una direzione.

Esempio



In questo esempio, useremo il classe vettoriale mostrare come a sequenziale contenitore opera.





#include
#include
utilizzando lo spazio dei nomi std;
int principale ( ) {
// inizializza un vettore di int tipo
vettore < int > numeri = { 10 , 2 , 16 , 70 , 5 } ;
// stampa il vettore
cout << 'I numeri sono: ' ;
per ( auto & io: num )
{
cout << io << ',' ;
}
ritorno 0 ;
}

Il codice precedente mostra l'uso di sequenziale contenitori in formato vettoriale, che consente la memorizzazione di matrici intere. Il programma inizializza un vettore di tipo intero, gli assegna dei valori e li stampa utilizzando un ciclo. Questo esempio mostra come è facile archiviare e accedere ai dati in C++ utilizzando il contenitore sequenziale .



2: Contenitori associativi

I contenitori associativi ci permettono di memorizzare gli elementi nel particolare ordine definito dall'operatore di confronto. A differenza di contenitori sequenziali , l'ordine degli elementi in contenitori associativi viene mantenuto utilizzando chiavi che consentono agli utenti di organizzare e accedere agli elementi. Quando un elemento viene inserito in un file contenitore associativo , viene ordinato automaticamente nella posizione corretta in base alla relativa chiave. Questi tipi di contenitori sono implementati internamente come strutture di dati ad albero binario.

IL associativo contenitori sono classificati come:

  • Carta geografica: una raccolta di coppie chiave-valore che sono state ordinate utilizzando chiavi univoche
  • Multimappa: una raccolta di coppie chiave-valore che sono state ordinate utilizzando le chiavi
  • Impostato: Chiavi univoche raccolte e disposte per chiavi.
  • Multiinsieme: una raccolta di chiavi che sono state ordinate utilizzando le chiavi

Esempio

Per illustrare come un associativo contenitore funziona, useremo il impostare la classe in questo esempio.

#include
#include
utilizzando lo spazio dei nomi std;
int principale ( )
{
// inizializzare A impostato di int tipo
impostato < int > numeri = { 10 , 2 , 16 , 70 , 5 } ;
// stampare il impostato
cout << 'I numeri sono: ' ;
per ( auto & io: num )
{
cout << io << ',' ;
}
ritorno 0 ;
}

Il codice precedente inizializza un insieme di numeri interi in C++, che è un esempio di contenitore associativo. Il set garantisce che gli elementi siano ordinati in ordine crescente per impostazione predefinita. Il codice quindi stampa i numeri nell'insieme utilizzando un ciclo for.

3: Contenitori associativi non ordinati

In C++, associativo non ordinato contenitori vengono utilizzati per fornire le versioni non ordinate di un file associativo contenitore . Sono implementati internamente come strutture di dati della tabella hash. IL associativo contenitori sono classificati come:

  • Mappa non ordinata: una raccolta di coppie chiave-valore che sono state sottoposte ad hashing utilizzando chiavi univoche.
  • Multimappa non ordinata: la raccolta di coppie chiave-valore che è stata sottoposta ad hashing utilizzando le chiavi.
  • Insieme non ordinato: una raccolta di chiavi univoche che sono state sottoposte ad hashing utilizzando le chiavi.
  • Multiset non ordinato: una raccolta di chiavi che sono state sottoposte ad hashing utilizzando le chiavi.

Esempio

Per illustrare come un associativo non ordinato contenitore funziona, useremo il insieme non ordinato classe in questo esempio.

#include
#include
utilizzando lo spazio dei nomi std;
int principale ( )
{
// inizializza un unordered_set di int tipo
set_non ordinato < int > numeri = { 10 , 2 , 16 , 70 , 5 } ;
// stampare il impostato
cout << 'I numeri sono: ' ;
per ( auto & io: num )
{
cout << io << ',' ;
}
ritorno 0 ;
}

Conclusione

Un STL C++ contenitore è l'oggetto titolare per memorizzare la raccolta di altri oggetti. Funzionano in modo simile ai modelli di classe e supportano un gran numero di tipi di elementi. In questo tutorial, abbiamo discusso i tipi più comunemente usati di contenitori STL C++, che sono contenitori sequenziali, contenitori associativi così come contenitori associativi non ordinati .