La distinzione chiave tra loro e gli oggetti della lista in avanti è che i primi sono elenchi a legato singolo, il che significa che possono essere solo iterati in cambio di essere un po 'più piccoli ed efficaci."
Elenco C ++
Di conseguenza, un vettore non mantiene i suoi elementi in memoria contigua come fa un elenco. Dal momento che ci vuole molto tempo per spostare tutte le informazioni, l'inserimento ed eliminazione nel mezzo di un vettore sono piuttosto costosi. Elenco collegato, che utilizza un contenitore di elenco nella sua implementazione, risolve questo problema. L'elenco salva gli elementi su una memoria contigua, ma il vettore si archivia su una memoria non contigua. Dato che ci vuole molto tempo per spostare tutti gli elementi, l'inserimento ed eliminazione nel vettore sono piuttosto costosi.
Gli elenchi forniscono comunicazioni bidirezionali e offrono un mezzo efficace per eseguire operazioni di inserimento e cancellazione.
Tipi di elenco
Elenco singolo
È il tipo più semplice di elenco collegato, con ciascun nodo che include dati e un puntatore al nodo dopo che ha lo stesso tipo di dati. Poiché ha un puntatore al seguente nodo, il nodo memorizza l'indirizzo di quel nodo nella sequenza. I dati possono essere attraversati solo in un modo in un unico elenco collegato.
Elenco doppio collegamento
I dati e il puntatore aggiuntivo, noto come puntatore precedente presente in un elenco singolarmente collegato, sono presenti anche in un elenco doppiamente collegato. Il collegamento precedente del primo nodo nell'elenco indica Null, proprio come lo fa il nodo finale del nodo successivo dell'elenco.
Doppia elenco circolare
Un elenco circolare collegato ha tutti i suoi nodi collegati in un cerchio. L'ultimo null è assente. Esistono due tipi di elenchi collegati circolari: singola circolare e doppia circolare.
Vantaggi dell'elenco C ++
Poiché la dimensione dell'elenco collegato fluttua mentre viene utilizzata, non c'è perdita di memoria.
Non c'è perdita di memoria perché le dimensioni dell'elenco collegato cambiano quando viene utilizzata.
Funzioni di elenco C ++
Elenco :: front ()
L'elenco delle funzioni STL C ++ incorporato :: Front restituisce un riferimento alla prima voce in un contenitore dell'elenco.
Sintassi:
# lista nome.davanti()Parametri:
Questa funzione restituisce semplicemente un riferimento alla prima voce nel contenitore dell'elenco; non accetta alcun parametro.
Valore di ritorno: il primo elemento nel contenitore dell'elenco è direttamente referenziato da questa funzione.
Eccezione: se utilizzata con un contenitore dell'elenco vuoto, questa funzione genera un comportamento indefinito.
Elenco back ()
Un riferimento diretto all'elemento finale nel contenitore dell'elenco viene restituito dal metodo elenco :: back () nel C ++ STL. Perché List :: end () fornisce solo un iteratore all'ultima voce, questa funzione differisce da quella.
Sintassi:
# lista nome.Indietro()Parametri:
Non esiste un parametro; restituire il valore. L'elemento finale nell'elenco demo del contenitore dell'elenco è direttamente citato da questa funzione.
Eccezione: non esiste un tale eccezione in questo metodo, ma invocarlo con un contenitore Elenco vuoto fa sì che C ++ si comporti in modo indefinibile.
Elenco :: push_front ()
Il metodo C ++ STL incorporato viene utilizzato per inserire un elemento proprio prima dell'elemento superiore in un contenitore dell'elenco. Inoltre, la dimensione del contenitore è potenziata da questa funzione da 1.
Sintassi:
# lista nome.PUSH_FRONT (valore del tipo di dati)Parametri:
Questa opzione designa l'elemento che deve essere aggiunto nella parte superiore dell'elenco.
Valore di ritorno:
Niente viene restituito da questa funzione.
Elenco: push_back ()
Per inserire un nuovo elemento in un contenitore elenco esistente, utilizzare la funzione Elenco: Push Back () nella STL C ++. Aggiunge l'elemento da aggiungere al contenitore dell'elenco prendendolo come argomento.
Sintassi:
# lista nome.push_back (valore)Parametri:
Esiste un solo parametro necessario per questa funzione. Questo si riferisce all'elemento nome elenco che deve essere inserito.
Tipo di ritorno: il tipo di ritorno di questa funzione è nullo e non ha valore di restituzione.
Elenco :: pop_front ()
L'elemento frontale del contenitore di un elenco può essere rimosso utilizzando l'elenco delle funzioni STL C ++ incorporato :: pop front (). Di conseguenza, questa funzione riduce le dimensioni del contenitore di 1 rimuovendo la voce dalla parte superiore dell'elenco.
Sintassi:
# lista nome.pop_front ();Valore di ritorno:
Niente viene restituito da questa funzione.
Elenco :: pop_back ()
Utilizzare l'elenco dei metodi STL C ++ incorporato :: Pop Back per rimuovere un elemento dal retro di un elenco del contenitore. In altre parole, l'ultimo elemento in un contenitore di elenco viene rimosso da questa funzione. Rimozione di un membro dalla fine dell'elenco Questa funzione riduce le dimensioni del contenitore di 1.
Sintassi:
# lista nome.pop_back ();Valore di ritorno:
Niente viene restituito da questa funzione.
Elenco :: inizio ()
Questo lo distingue dalla funzione front ().
Sintassi:
# lista nome.inizio()Parametri:
Non vengono passati parametri.
Elenco :: rend ()
L'elenco incorporato :: rend () nel metodo C ++ STL restituisce un iteratore inverso che indica una posizione prima dell'inizio dell'elenco.
Sintassi:
# lista nome.rend ()Valore di ritorno:
Un iteratore inverso punta a una posizione prima che l'inizio dell'elenco venga restituito.
Elenco :: cbegin ()
Il metodo STL C ++ incorporato CBEGIN () restituisce un iteratore di accesso casuale costante che punta all'inizio dell'elenco.
Sintassi:
# lista nome.cbegin ()Elenco :: Cend ()
Un iteratore di accesso casuale costante che punta alla fine dell'elenco viene restituito dal metodo STL C ++ incorporato ().
Sintassi:
# lista nome.Cend ()Elenco :: Crbegin ()
Il metodo STL C ++ incorporato Crbegin () restituisce un iteratore inverso costante che porta all'elemento finale dell'elenco o all'inizio del contenitore invertito. A causa della natura costante dell'iteratore, gli elementi non possono essere modificati o modificati.
Sintassi:
# lista nome.Crbegin ()Elenco :: cred ()
Il metodo STL C ++ incorporato Crend restituisce un iteratore inverso costante collegato all'elemento #Hypothetical che viene prima del primo elemento nell'elenco o nella parte inversa dell'elenco. L'iteratore è costante; Pertanto, gli elementi non possono essere modificati o aggiornati.
Sintassi:
# lista nome.merd ()Elenco :: vuoto ()
Per verificare se un determinato contenitore è vuoto o meno, utilizzare l'elenco delle funzioni STL C ++ incorporato :: vuoto (). Questa funzione non altera l'elenco; Determina semplicemente se un elenco è vuoto o meno o se la sua dimensione è 0 o no.
Sintassi:
# lista nome.vuoto()Elenco :: insert ()
Per inserire le voci in un elenco in qualsiasi momento, utilizzare la funzione elenco :: insert (). Posizionare il numero di elementi da inserire e il valore da inserire sono i tre parametri per questa funzione. Se non specificato, il numero di elementi è impostato su uno per impostazione predefinita.
Sintassi:
# Insert (pos_iter, Ele_num, Ele)Elenco :: cancella ()
La funzione STL C ++ incorporata viene utilizzata per rimuovere gli elementi da un contenitore dell'elenco. Il contenitore dell'elenco fornito può essere utilizzato per rimuovere un singolo elemento o un gruppo di elementi utilizzando questa funzione.
Sintassi:
# iterator list_name.Cancella (posizione dell'iteratore)Parametri:
Passiamo due parametri.
Posizione: quando un singolo elemento deve essere eliminato usando la funzione, questo parametro viene utilizzato. Questo parametro si riferisce a un iteratore che identifica l'elemento dal contenitore dell'elenco che deve essere eliminato.
Innanzitutto, ultimo: i termini "Parametro prima" e "parametro ultimo" si riferiscono all'iteratore che punta al primo e all'ultimo elementi nell'intervallo, rispettivamente, che devono essere eliminati. Questo elimina tutti gli elementi della gamma, incluso l'elemento che l'iteratore ha indicato prima ma escludendo l'elemento che l'iteratore ha indicato per durare.
Elenco :: Assegna ()
Per assegnare valori a un elenco, utilizzare il metodo STL C ++ integrato Assegna ().
Sintassi:
# lista nome.Assegna (conteggio, valore)Parametri:
Conteggio: il numero di valori che deve essere aggiunto al nome dell'elenco.
Valore: a partire dall'elemento iniziale, a questo valore verrà assegnato un certo numero di volte. Se l'elenco ha già alcuni elementi, l'elemento fornito nel valore del parametro prenderà il suo posto. Il tipo di dati di questo parametro deve essere lo stesso del tipo di dati del nome dell'elenco.
Elenco :: rimozione ()
Elimina gli elementi che valutano rispetto a un valore. Prende un valore come input e rimuove qualsiasi elemento dal contenitore dell'elenco i cui valori corrispondono al valore passato come parametro della funzione.
Sintassi:
# lista nome.Rimuovi (Val)Elenco :: rimozione ()
Il metodo Rimovi () viene utilizzato per eliminare tutte le voci da un elenco che corrisponde a un valore specificato come parametro di funzione.
Sintassi:
# lista nome.Rimuovi (valore)Elenco :: rimozione_if ()
La funzione Rimuovi if () viene utilizzata per eliminare tutte le voci da un elenco che soddisfano una condizione o un predicato che viene inviato come argomento.
Sintassi:
# lista nome.Rimuovi_if (predicato)Elenco :: reverse ()
Un contenitore dell'elenco può essere invertito utilizzando il metodo integrato inverso () in C ++ STL. Modifica l'ordine dell'elenco degli elementi del contenitore.
Sintassi:
# lista nome.inversione()Elenco :: size ()
In altre parole, viene impiegato per determinare la dimensione del contenitore dell'elenco.
Sintassi:
# lista nome.misurare();Elenco :: Riassie ()
Regola la dimensione del contenitore dell'elenco per adattarsi esattamente agli elementi "N" quando viene dato il numero "N" come parametro.
Sintassi:
# Lista nome.RISIZE (int n, value_type val)Elenco :: Sort ()
Gli elementi del contenitore possono essere ordinati spostandoli in giro usando la funzione Ord ().
Sintassi:
# lista nome.ordinare()Elenco :: max_size ()
Max size () restituisce il maggior numero di elementi che un contenitore dell'elenco può ospitare.
Sintassi:
# lista nome.max_size ()Elenco :: univoco ()
Elimina tutti i membri consecutivi dall'elenco che sono duplicati. Funziona solo con elenchi ordinati.
Sintassi:
# lista nome.univoco (nome binarypredicate)Elenco :: swap ()
Usando questa funzione, il contenuto di due elenchi della stessa dimensione e tipo può essere scambiato.
Sintassi:
# ListName1.SWAP (ListName2)Elenco :: clear ()
La dimensione del contenitore dell'elenco è ridotta a 0 quando tutti gli elementi vengono rimossi utilizzando la funzione Clear ().
Sintassi:
# lista nome.chiaro()Elenco :: operatore =
Utilizzando questo operatore, i contenuti esistenti del contenitore vengono sostituiti e dati nuovi incarichi. Inoltre, regola le dimensioni per adattarsi al nuovo contenuto.
Sintassi:
# listName1 = (listName2)In questo articolo, spiegheremo diverse illustrazioni delle funzioni dell'elenco.
Esempio n. 1
Qui vedremo come funzionano le funzioni dell'elenco.
#includereIn questo codice, incorporiamo file di intestazione, e . Quindi chiamiamo la funzione principale (). Iniziamo la codifica nella funzione principale (). Nella funzione principale (), aggiungi il mio elenco e passa i valori diversi. Utilizza il ciclo "per" e inizializza la variabile "y" e aggiungi il valore della variabile "my_list".
Esempio n. 2
In questo caso, vediamo come ridurre il valore dell'iteratore utilizzando le funzioni di elenco.
#includereQui, aggiungiamo file di intestazione, . Il file di intestazione tratta l'uso delle funzioni dell'elenco C ++. Allora useremo lo spazio dei nomi. Insieme a questo, abbiamo chiamato la funzione principale (). Innanzitutto, abbiamo inizializzato l'elenco; Quindi, abbiamo superato i valori. Aggiungiamo la funzione inizia () per ottenere i 9 elementi da esso. Successivamente, aggiungiamo mosse (), 15 elementi da questa funzione mossa (). Abbiamo usato "cout" per stampare la dichiarazione "Dimensione dell'elenco 0". E il prossimo "cout" stampa la dichiarazione "Elenco 15 contenuti". Alla fine, utilizziamo il ciclo "per", quindi il valore dell'iteratore diminuisce dopo che tutto questo comando "return0" viene immesso.
Acquisiamo questo tipo di risultato dopo aver eseguito il codice sopra menzionato.
Conclusione
Innanzitutto, abbiamo parlato delle funzioni dell'elenco C ++. Quindi osserviamo diverse funzioni C ++ si applicano all'elenco. Abbiamo definito diverse funzioni di elenco C ++ e anche la loro sintassi. In questo articolo, abbiamo eseguito vari codici che contengono funzioni di elenco C ++. Nella prima illustrazione, utilizziamo un elenco collegato e passiamo i parametri. Nel secondo esempio, applichiamo l'elenco delle funzioni e passiamo i parametri in ogni funzione.