La Standard Template Library (STL) è un insieme di classi template C ++ per fornire strutture dati di programmazione comuni e funzioni come elenchi, stack, array, ecc. In questo articolo STL in C ++ discuteremo i seguenti puntatori:
Andando avanti con questo articolo su STL in C ++
Modelli C ++
Il C ++ ci fornisce una funzionalità di modelli che consente a funzioni e classi di operare con tipi generici. Ciò consente la riutilizzabilità di una funzione o di una classe e consente di lavorare su molti tipi di dati diversi senza essere riscritti per ciascuno.
Andando avanti con questo articolo su STL in C ++
Funzioni generiche e STL
Durante la programmazione molte volte è necessario creare funzioni che eseguano le stesse operazioni ma lavorino con tipi di dati diversi. Quindi, per superare questo problema, C ++ fornisce una funzionalità per creare una singola funzione generica invece di molte funzioni che possono funzionare con diversi tipi di dati utilizzando il parametro del modello. La raccolta di queste classi e funzioni genric si chiama Standard Template Library (STL)
somma delle cifre di un numero in java
I componenti di STL che ora fanno parte della libreria C ++ standard sono definiti nello spazio dei nomi std. Dobbiamo, quindi, utilizzare la direttiva using namespace per importarli nel nostro programma.
Sintassi:
Utilizzando lo spazio dei nomi std
STL ha tre componenti
Contenitori
Algoritmi
Iteratori
Questi tre componenti lavorano insieme in sinergia per fornire supporto a una varietà di soluzioni di programmazione. L'algoritmo utilizza iteratori per eseguire operazioni memorizzate nei contenitori.
Un contenitore è un oggetto che archivia i dati in memoria in modo organizzato. I contenitori in STL sono implementati da classi modello e quindi possono essere facilmente modificati e personalizzati per contenere diversi tipi di dati.
Una procedura che viene utilizzata per elaborare i dati contenuti nei contenitori è definita come un algoritmo. L'STL include molti diversi tipi di algoritmi per fornire supporto ad attività come inizializzazione, ricerca, copia, ordinamento e unione, copia, ordinamento e unione. Gli algoritmi sono implementati dalle funzioni del modello.
Un iteratore può essere definito come un oggetto che punta a un elemento in un contenitore. Gli iteratori possono essere utilizzati per spostarsi nel contenuto dei contenitori. Gli iteratori vengono gestiti proprio come i puntatori. Possiamo incrementarli o decrementarli. Gli iteratori collegano l'algoritmo con i contenitori e svolgono un ruolo chiave nella manipolazione dei dati memorizzati nei contenitori.
Andando avanti con questo articolo su STL in C ++
Contenitori
STL definisce dieci contenitori che sono raggruppati in tre categorie.
Contenitori | Descrizione | File di intestazione | Iteratore |
Vettore | Può essere definito come un array dinamico. Consente l'accesso diretto a qualsiasi elemento. | Accesso casuale | |
Elenco | È un elenco lineare bidirezionale. Consente l'inserimento e la cancellazione ovunque | Bidirezionale | |
e | È una coda a doppia estremità. Consente inserimenti e cancellazioni su entrambe le estremità. Consente l'accesso diretto a qualsiasi elemento. | Accesso casuale | |
impostato | È un contenitore associato per la memorizzazione di set univoci. Consente una rapida ricerca. | Bidirezionale | |
multiset | È un contenitore associato per l'archiviazione di set non univoci. | Bidirezionale | |
carta geografica | È un contenitore associato per l'archiviazione di coppie chiave / valore univoche. Ogni chiave è associata a un solo valore. | Bidirezionale | |
multimappa | È un contenitore associato per la memorizzazione di chiave / valore in cui una chiave può essere associata a più di un valore (mappatura uno-a-molti). Consente una ricerca basata su chiavi. | Bidirezionale | |
pila | Uno stack standard segue last-in-first-out (LIFO) | Nessun iteratore | |
coda | Una coda standard segue FIFO (first-in-first-out) | Nessun iteratore | |
coda di priorità | Il primo elemento fuori è sempre l'elemento con la massima priorità | Nessun iteratore |
Contenitori di sequenza
I contenitori di sequenza memorizzano gli elementi in un ordine lineare. Tutti gli elementi sono collegati tra loro dalla loro posizione lungo la linea. Consentono l'inserimento di elementi e tutti supportano più operazioni su di essi.
L'STL fornisce tre tipi di elementi di sequenza:
- Vettore
- Elenco
- e
Contenitori associativi:
Sono progettati in modo tale da supportare l'accesso diretto agli elementi utilizzando i tasti. Non sono sequenziali. Esistono quattro tipi di file
contenitori associativi:
- Impostato
- Multiset
- Carta geografica
- Multimappa
Tutti i contenitori di cui sopra memorizzano i dati in una struttura chiamata albero che facilita la velocità
ricerca, eliminazione e inserimento a differenza di sequenziale. Il set di contenitori o il multiset può memorizzare vari elementi e fornire operazioni per manipolarli utilizzando i valori come chiavi.
E map o Multimap vengono utilizzati per memorizzare gli elementi in coppia, uno chiamato la chiave e l'altro
chiamato il valore.
Contenitori derivati:
L'STL fornisce tre contenitori derivati, ovvero stack, queue e priority_queue. Questi sono noti anche come adattatori per contenitori.
Esistono tre tipi di contenitori derivati:
1. Stack
2.Queue
3.Priority_quue
Stack, code e code di priorità possono essere facilmente creati da diversi contenitori di sequenze. I contenitori derivati non supportano gli iteratori e quindi non possiamo usarli per la manipolazione dei dati. Tuttavia, supportano due funzioni membro pop () e push () per l'implementazione di operazioni di eliminazione e inserimento.
Andando avanti con questo articolo su STL in C ++
Algoritmi
Gli algoritmi sono funzioni che possono essere utilizzate generalmente in una varietà di contenitori per l'elaborazione del loro contenuto. Sebbene ogni contenitore fornisca funzioni per le sue operazioni di base, STL fornisce più di sessanta algoritmi standard per supportare operazioni più estese o complesse. Gli algoritmi standard ci consentono anche di lavorare con due diversi tipi di contenitori contemporaneamente.
Gli algoritmi STL rafforzano la filosofia della riusabilità. Utilizzando questi algoritmi, i programmatori possono risparmiare molto tempo e fatica. Per avere accesso agli algoritmi STL, dobbiamo includere nel nostro programma.
L'algoritmo STL, in base alla natura delle operazioni che eseguono, può essere classificato come sotto:
Algoritmi non mutanti
Algoritmi mutanti
Algoritmi di ordinamento
Imposta algoritmi
Algoritmo relazionale
Andando avanti con questo articolo su STL in C ++
Iteratori:
Gli iteratori agiscono come puntatori e vengono utilizzati per accedere agli elementi del contenitore. Usiamo iteratori per spostarci tra i contenuti dei contenitori. Gli iteratori vengono gestiti proprio come i puntatori. Possiamo incrementarli o decrementarli secondo le nostre esigenze. Gli iteratori collegano i contenitori con algoritmi e svolgono un ruolo fondamentale nella manipolazione dei dati archiviati nei contenitori. Sono spesso usati per passare da un elemento all'altro, questo processo è chiamato iterazione attraverso il contenitore.
Esistono cinque tipi di iteratori:
1.Input
2.Uscita
3. Avanti
4.Bidirezionale
come trovare palindromo in java
5.Random
Iteratore | Metodo di accesso | Direzione del movimento | Capacità di I / O | Nota |
Ingresso | Lineare | Solo avanti | Sola lettura | Non può essere salvato |
Produzione | Lineare | Solo avanti | Scrivi solo | Non può essere salvato |
Inoltrare | Lineare | Solo avanti | Leggere scrivere | Può essere salvato |
Bidirezionale | Lineare | Avanti e indietro | Leggere scrivere | Può essere salvato |
Casuale | Casuale | Avanti e indietro | Leggere scrivere | Può essere salvato |
Diversi tipi di iteratori devono essere utilizzati con i diversi tipi di contenitori in modo tale che solo
I contenitori di sequenza e associativi possono viaggiare attraverso gli iteratori. Ogni tipo di iteratore viene utilizzato per eseguire determinate funzioni. Gli iteratori di input e output supportano le funzioni minime. Possono essere utilizzati solo per il passaggio in un container. Gli iteratori forward supportano tutte le operazioni degli iteratori di input e output e mantengono anche la loro posizione nel contenitore. Un iteratore bidirezionale, pur supportando tutte le operazioni degli iteratori in avanti, fornisce la possibilità di spostarsi nella direzione all'indietro nel contenitore.
Così siamo giunti alla fine di questo articolo su 'STL in C ++'. Se desideri saperne di più, dai un'occhiata al da Edureka, una società di apprendimento online affidabile. Il corso di formazione e certificazione Java J2EE e SOA di Edureka è progettato per formarti sia sui concetti di base che avanzati su Java insieme a vari framework Java come Hibernate e Spring.
Hai domande per noi? Per favore, menzionalo nella sezione commenti di questo blog e ti risponderemo il prima possibile.