Контейнеры STL: vettore. parte 3

Vota questo articolo




контейнеры C ++ STL , Standard Template Library, vettore ++, vettore c ++

il lezione precedente мы определили переменную типа vettore<galleggiante>, come un array equivalente, le dimensioni di cui possiamo arbitrariamente cambiare il corso della esecuzione di codice. Ma questo non significa (così come vettori per classica C ++), possiamo quindi creare array solo dinamiche di semplici tipi built-in. Tipologia prodotto vettore Può essere arbitrario e arbitrariamente complessa! per esempio, potremmo definire un gruppo di studenti:

контейнеры C ++ STL , Standard Template Library, vettore ++, vettore c ++

In questo esempio,, in particolare, abbiamo applicato questo puntatore e overloading degli operatori. Lascio link, se qualcuno ha bisogno di rinfrescarsi nella memoria.

Vector modello di classe (e qualsiasi contenitore STL) può essere, a sua volta, контейнер STL. per esempio vettore< vettore<int> > o vettore< vettore< vettore<int> > > (non dimenticare lo spazio tra la staffa di chiusura ‘>‘ - Si tratta di una caratteristica di parser sintattico). Così possiamo, per esempio, creare una classe di matrici triangolari:

контейнеры C ++ STL , Standard Template Library, vettore ++, vettore c ++
Il prossimo livello della nostra andare in tecnica vettori, e contenitori STL in generale, È il concetto di iteratore. Iterator - il concetto centrale di lavorare con contenitori STL. iteratore – si tratta di un'astrazione, che viene utilizzato per iterare (iterate) Elementi STL in un contenitore e l'accesso fornendo ai singoli elementi. iteratore p Non è un puntatore, ma, dapprima, si può condizionalmente considerarlo come qualcosa di simile in apparenza: *p Indicheremo il valore dei dati sotto l'iteratore corrente, p ++ l'iteratore all'elemento successivo nel contenitore, e p– (quando ciò sia consentito) - Nella voce precedente. Per i diversi tipi di contenitori, iteratori corrispondenti possono applicarsi a una delle 5 categorie: ingressi, fine settimana, unidirezionale, accesso bidirezionale e casuali. vettori iteratori - un accesso diretto iteratore. Ecco perché vettori possono essere operazione di indicizzazione. queste, abbastanza superficiale, La conoscenza iteratori noi abbastanza, per iniziare a lavorare con loro.

iteratori Vosproizvedёm in termini di problema di trovare tutti i numeri primi, non superiore a N (crivello di Eratostene), abbiamo già deciso in precedenza array C ++ Tecnologia:

Come si può facilmente constatare dalla descrizione vettore<bool>::iteratore, iteratore che mantiene una sorta di contenitore, che si riferisce a, e il tipo di questo contenitore. Ciò richiede abbastanza ingombrante di scrivere una descrizione accurata del tipo di iteratore. Ma il più recente standard C ++ 11 ha introdotto il concetto tipo di schiusa: se il tipo di oggetto desiderato è derivato dal contesto dell'uso, il tipo di oggetto può essere dichiarato descrittore auto (tipo di uscita). Poi la linea 16 il codice mostrato sopra può essere scritta come:

infine, vettori (e per tutti i contenitori, avendo bidirezionale iteratorы, come detto sopra) Può essere definito iteratori Reverse, Non vengono spostati dall'inizio alla fine del contenitore, e viceversa - dalla fine all'inizio. Questo iteratore deve essere dichiarato come un tipo molto diverso di, per esempio:

Ma qui, possiamo contare su inferenza, come nel seguente esempio:

контейнеры C ++ STL , Standard Template Library, vettore ++, vettore c ++

Tutte le questioni derivanti da porre nella lezione commenti.

Newsletter nuove lezioni sulla programmazione:

olio

Di olio

esperienze pratiche circa lo sviluppo del software 40 anni. Maestro globale Logic società di software internazionale. IBM Developer funziona autore permanente di pubblicazioni. redattore scientifico del computer casa editrice letteratura "Simbolo-Plus", San Pietroburgo.

2 pensieri su "Контейнеры STL: vettore. parte 3

Lascia un Commento

Inserire il codice nei tag: <pre class="lang:C ++ decodifica:true ">IL TUO CODICE</pre>