Ricerca…


introduzione

std::forward_list è un contenitore che supporta l'inserimento e la rimozione rapida di elementi da qualsiasi posizione nel contenitore. L'accesso casuale rapido non è supportato. È implementato come un elenco collegato singolarmente e, in sostanza, non ha alcun overhead rispetto alla sua implementazione in C. Rispetto a std::list questo contenitore offre uno spazio più efficiente di storage quando l'iterazione bidirezionale non è necessaria.

Osservazioni

L'aggiunta, la rimozione e lo spostamento degli elementi all'interno dell'elenco o tra più elenchi non invalida gli iteratori che si riferiscono ad altri elementi nell'elenco. Tuttavia, un iteratore o riferimento che fa riferimento a un elemento viene invalidato quando l'elemento corrispondente viene rimosso (tramite erase_after) dall'elenco. std :: forward_list soddisfa i requisiti del Container (eccetto per la funzione membro dimensione e la complessità dell'operatore == è sempre lineare), AllocatorAwareContainer e SequenceContainer.

Esempio

#include <forward_list>
#include <string>
#include <iostream>

template<typename T>
std::ostream& operator<<(std::ostream& s, const std::forward_list<T>& v) {
    s.put('[');
    char comma[3] = {'\0', ' ', '\0'};
    for (const auto& e : v) {
        s << comma << e;
        comma[0] = ',';
    }
    return s << ']';
}

int main() 
{
    // c++11 initializer list syntax:
    std::forward_list<std::string> words1 {"the", "frogurt", "is", "also", "cursed"};
    std::cout << "words1: " << words1 << '\n';
 
    // words2 == words1
    std::forward_list<std::string> words2(words1.begin(), words1.end());
    std::cout << "words2: " << words2 << '\n';
 
    // words3 == words1
    std::forward_list<std::string> words3(words1);
    std::cout << "words3: " << words3 << '\n';
 
    // words4 is {"Mo", "Mo", "Mo", "Mo", "Mo"}
    std::forward_list<std::string> words4(5, "Mo");
    std::cout << "words4: " << words4 << '\n';
}

Produzione:

words1: [the, frogurt, is, also, cursed]
words2: [the, frogurt, is, also, cursed]
words3: [the, frogurt, is, also, cursed]
words4: [Mo, Mo, Mo, Mo, Mo]

metodi

Nome del metodo Definizione
operator= assegna valori al contenitore
assign assegna valori al contenitore
get_allocator restituisce l'allocatore associato
------ ------
Accesso all'elemento
front accedi al primo elemento
------ ------
iteratori
before_begi n restituisce un iteratore all'elemento prima di iniziare
cbefore_begin restituisce un iteratore costante all'elemento prima di iniziare
begin restituisce un iteratore all'inizio
cbegin restituisce un iteratore const all'inizio
end restituisce un iteratore fino alla fine
cend restituisce un iteratore fino alla fine
Capacità
empty controlla se il contenitore è vuoto
max_size restituisce il numero massimo possibile di elementi
modificatori
clear cancella il contenuto
insert_after inserisce elementi dopo un elemento
emplace_after costruisce elementi sul posto dopo un elemento
erase_after cancella un elemento dopo un elemento
push_front inserisce un elemento all'inizio
emplace_front costruisce un elemento sul posto all'inizio
pop_front rimuove il primo elemento
resize cambia il numero di elementi memorizzati
swap scambia il contenuto
operazioni
merge unisce due liste ordinate
splice_after sposta elementi da un'altra forward_list
remove rimuove elementi che soddisfano criteri specifici
remove_if rimuove elementi che soddisfano criteri specifici
reverse inverte l'ordine degli elementi
unique rimuove gli elementi duplicati consecutivi
sort ordina gli elementi


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow