Контейнеры STL. parte 2




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

STL Si introduce una serie di concetti e strutture di dati, che in quasi tutti i casi, consentono di semplificare notevolmente il codice. Introduciamo la seguente categoria concetti:

  1. contenitore - Deposito di un insieme di oggetti in memoria.

  2. Iterator - mezzi di accesso ai contenuti dei singoli oggetti nel contenitore.

  3. algoritmo - Individuazione delle procedure di calcolo più standard sui contenitori.

  4. adattatore - Adattamento delle principali categorie per le interfacce più comunemente utilizzati (come un camino o di coda).

  5. funtore (un'entità funzionale) - Funzione di occultamento in un oggetto per usarlo in altre categorie.

biblioteca STL - Questo è molto vasta area. La sua descrizione del libro sono dedicati a tutta individuale (Uno dei migliori libri in russo, sufficiente per lo sviluppo di STL in dettaglio, Viene mostrato alla fine del testo). abbiamo anche, a causa del livello iniziale di amore, prendere in considerazione tecnica STL ad esempi intuitivamente chiaro.

sintassi STL Si basa sull'uso della sintassi del C ++ come modelli (modelli) classi e modelli di funzione. Ma l'applicazione di successo della tecnologia STL Non necessariamente una profonda conoscenza della tecnologia modelli.

Il concetto centrale STL, attorno al quale ruota tutto il resto, esso contenitore (Più uso del termine collezione). Container - una raccolta di un numero di elementi simili, confezionato in un contenitore in un certo modo. Basta un contenitore prototipo per il linguaggio classico è C ++ schieramento. la strada, quali elementi sono imballati nel contenitore, Esso determina il tipo di contenitore e comportamento degli elementi in un contenitore. STL Si introduce un certo numero di diversi tipi di contenitori:

  • contenitori successivi - vettore (vettore), lista doppiamente collegata (lista), DEK (e);

  • contenitori associativi - set (impostato e multiset ), tabella hash (carta geografica e multimap);

  • pseudo-container - bitmap (bitset), linee (corda e wstring), array (valarray);

Abbiamo costantemente Guardiamo gli esempi di utilizzo del contenitore principale, passando dalla più semplice alla più complessa. Il tipo più semplice di essi è vettore. Più vicino prototipo vettore è un array di C ++. Ma la dimensione del vettore in qualsiasi momento può cambiare dinamicamente operazioni aggiunta (metodo respingere()) o eliminare un elemento. stesso, come matrice, possiamo rivolgerci a un'operazione vettore indicizzazione elemento arbitrario [n]. Questa è la prima, lo strato superficiale di conoscenza vettore, noi che consente di iniziare a lavorare con lui:

descrizione vettore<galleggiante> (questo è il già citato modello la descrizione della classe) dichiara nel codice oggetto schieramento: elementi vettoriali di tipo galleggiante.

Successivo vediamo tali metodi di classe vettore<galleggiante>, come max_size() - La lunghezza massima dei vettori in generale (attuazione di una costante); dimensione() - La dimensione corrente (il numero di elementi) vettore; capacità() - La capacità di corrente del vettore (il numero massimo di elementi, che può essere collocato in un vettore mettendolo in corrente). Facendo questo frammento dà qualcosa come il seguente (dettagli possono variare a seconda dell'implementazione):

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

Qui potete vedere il comportamento di vettore molto interessante (in questo senso e): quando si aggiunge l'elemento successivo, capacità vector non è sufficiente, fatto nuovo alloggio vettore, due volte la capacità di riservare per lui (con un margine, per includere l'aggiunta di un nuovo elemento non è desiderata una nuova riassegnazione).

Così abbiamo ottenuto l'equivalente di un array C ++, quale dimensione (dimensione()) cambiamenti nelle unità arbitrarie che vanno da pochi a milioni di elementi. badare (è molto importante), che aumentando la dimensione del vettore è raggiunto non indicizzazione oltre la sua dimensione attuale, e "zatalkivaniem» (metodo respingere()) nuovo elemento nel fine vettore. Un altro modo per cambiare la dimensione del vettore - è quello di chiamare i metodi ridimensionare(). Ecco perché, previsto il vettore 2 diverso metodo di indicizzazione: operazione [n] e una funzione metodo a(n). metodo a() controlla la dimensione attuale del vettore dimensione(), e l'indicizzazione lavora per il suo confine eccezione (è un errore!). davanti, operazione di indicizzazione non è controlli alle frontiere, è pericoloso, ma è più veloce.

контейнеры C ++ STL , Standard Template Library, C ++ contenitore[1] Scott Meyers, L'uso efficace di STL, "Peter" di San Pietroburgo. 2002, ISBN: 5-94723-382-7, 244 pp. Il collegamento può essere leggere il libro on-line.

Newsletter nuove lezioni sulla programmazione:

data
pagina
Контейнеры STL. parte 2
valutazione
51stella1stella1stella1stella1stella
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.

Lascia un Commento

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