STL in c ++: tutto ciò che devi sapere



Questo articolo ti fornirà una conoscenza dettagliata e completa di STL in C ++ e ti darà anche un'idea dei diversi contenitori.

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.

Container-STL-in-C++

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:

  1. Impostato
  2. Multiset
  3. Carta geografica
  4. 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.