Classe map
Utilizzato per l'archiviazione e il recupero di dati da una raccolta in cui ogni elemento è costituito da una coppia che contiene sia un valore dati che una chiave di ordinamento. Il valore della chiave è univoco e viene utilizzato per l'ordinamento automatico dei dati.
Il valore di un elemento di una mappa può essere modificato direttamente. Il valore della chiave è una costante e non può essere modificato. Al contrario, i valori delle chiavi associati a elementi precedenti devono essere eliminati e i valori delle nuove chiavi devono essere inseriti per i nuovi elementi.
template <
class Key,
class Type,
class Traits = less<Key>,
class Allocator=allocator<pair <const Key, Type> >
> class map;
Parametri
Key
Tipo di dati relativo alle chiavi da archiviare nella mappa.Type
Tipo di dati relativo agli elementi da archiviare nella mappa.Traits
Tipo che fornisce un oggetto funzione in grado di confrontare i valori di due elementi come chiavi di ordinamento per determinarne l'ordine relativo nella mappa. Questo argomento è facoltativo e il predicato binario less<Key> rappresenta il valore predefinito.Allocator
Tipo che rappresenta l'oggetto allocatore archiviato che incapsula i dettagli relativi all'allocazione della mappa e alla deallocazione della memoria. Questo argomento è facoltativo e il valore predefinito è allocator<pair <constKey*,* Type> >.
Note
La classe della mappa STL (Standard Template Library) è:
Un contenitore di dimensioni variabili in grado di recuperare in modo efficiente i valori degli elementi in base ai valori delle chiavi associate.
Reversibile, in quanto fornisce iteratori bidirezionali per accedere ai relativi elementi.
Ordinato, perché i relativi elementi vengono ordinati in base ai valori delle chiavi secondo una funzione di confronto specificata.
Univoco, perché ogni elemento deve disporre di una chiave univoca.
Un contenitore associativo di coppie, in quanto i valori dei dati degli elementi sono diversi dai valori delle relative chiavi.
Una classe modello, poiché le funzionalità che fornisce sono generiche e indipendenti dal tipo di elemento o di chiave. I tipi di dati utilizzati per gli elementi e le chiavi vengono specificati come parametri nella classe modello insieme alla funzione di confronto e all'allocatore.
Un iteratore fornito dalla classe della mappa è un iteratore bidirezionale, ma le funzioni membro delle classi insert e map hanno versioni che accettano come parametri di modello un iteratore di input più debole, in cui i requisiti delle funzionalità sono inferiori a quelli garantiti dalla classe degli iteratori bidirezionali. I diversi concetti di iteratore sono correlati dai perfezionamenti delle rispettive funzionalità. Ogni concetto di iteratore dispone di un proprio set di requisiti e gli algoritmi utilizzati con tali concetti devono essere limitati da tali requisiti. Un iteratore di input può essere dereferenziato per fare riferimento a un determinato oggetto, nonché incrementato all'iteratore successivo della sequenza.
È consigliabile basare la scelta del tipo di contenitore sul tipo di ricerca e inserimento richiesti dall'applicazione. I contenitori associativi sono ottimizzati per le operazioni di ricerca, inserimento e rimozione. Le funzioni membro che supportano in modo esplicito queste operazioni consentono di eseguirle in un tempo nella più pessimistica delle ipotesi proporzionale al logaritmo del numero di elementi presenti nel contenitore. L'inserimento di elementi non invalida gli iteratori e la rimozione di tali elementi invalida solo gli iteratori che avevano puntato in modo specifico agli elementi rimossi.
È consigliabile scegliere come contenitore associativo la mappa quando le condizioni che consentono di associare i valori alle chiavi vengono soddisfatte dall'applicazione. Un modello relativo a questo tipo di struttura è costituito da un elenco ordinato di parole chiave univoche a cui sono associati valori di stringa contenenti definizioni. Se una parola dispone di più definizioni corrette, tali da rendere una chiave non univoca, è opportuno scegliere come contenitore un multimap. Se viene archiviato solo un elenco di parole, il set sarà il contenitore appropriato. Se sono consentite più occorrenze delle parole, il multiset rappresenterà la scelta appropriata.
La mappa ordina gli elementi da essa controllati chiamando un oggetto funzione archiviato di tipo key_compare. Questo oggetto archiviato è una funzione di confronto a cui si accede chiamando il metodo key_comp. In genere, due elementi qualsiasi vengono confrontati per determinare se uno è minore dell'altro o se sono equivalenti. Una volta che tutti gli elementi sono stati confrontati, viene creata una sequenza ordinata di elementi non equivalenti.
Nota
La funzione di confronto è un predicato binario che provoca un ordinamento di tipo "strict weak" nel senso matematico standard.Un predicato binario f(x,y) è un oggetto funzione che dispone di due oggetti argomento, x e y, e di un valore restituito, true o false.Un ordinamento imposto a un set è di tipo "strict weak" se il predicato binario è irriflessivo, antisimmetrico e transitivo e se l'equivalenza è transitiva, in cui due oggetti x e y vengono definiti equivalenti quando sia f(x,y)che f(y,x) sono false.Se la condizione di uguaglianza più forte tra le chiavi sostituisce quella di equivalenza, l'ordinamento diventa totale (nel senso che tutti gli elementi vengono ordinati l'uno rispetto all'altro) e le chiavi accoppiate saranno indistinguibili l'una dall'altra.
Membri
Costruttori
Costruisce una lista di dimensioni specifiche con elementi di un valore specifico, con un allocator specifico o come copia di un'altra mappa. |
Definizioni typedef
typedef per la classe allocator dell'oggetto mappa. |
|
typedef per un iteratore bidirezionale in grado di leggere un elemento const della mappa. |
|
typedef per un puntatore a un elemento const di una mappa. |
|
typedef per un riferimento a un elemento const archiviato in una mappa per la lettura e l'esecuzione di operazioni const. |
|
Tipo che fornisce un iteratore bidirezionale in grado di leggere qualsiasi elemento const della mappa. |
|
typedef Signed Integer per il numero di elementi di una mappa in un intervallo compreso tra gli elementi a cui puntano gli iteratori. |
|
typedef per un iteratore bidirezionale in grado di leggere o di modificare qualsiasi elemento di una mappa. |
|
typedef per un oggetto funzione in grado di confrontare due chiavi di ordinamento per determinare l'ordine relativo di due elementi della mappa. |
|
typedef per la chiave di ordinamento archiviata in ogni elemento della mappa. |
|
typedef per i dati archiviati in ogni elemento di una mappa. |
|
typedef per un puntatore a un elemento const di una mappa. |
|
typedef per un riferimento a un elemento archiviato in una mappa. |
|
typedef per un iteratore bidirezionale in grado di leggere o di modificare un elemento di una mappa invertita. |
|
typedef Unsigned Integer per il numero di elementi di una mappa |
|
typedef per il tipo di oggetto archiviato come elemento di una mappa. |
Funzioni membro
Trova un elemento con un valore della chiave specificata. |
|
Restituisce un iteratore che punta al primo elemento della mappa. |
|
Restituisce un iteratore const che punta al primo elemento della mappa. |
|
Restituisce un iteratore const successivo all'ultimo valore. |
|
Cancella tutti gli elementi di una mappa. |
|
Restituisce il numero di elementi di una mappa la cui chiave corrisponde alla chiave specificata in un parametro. |
|
Restituisce un iteratore const che punta al primo elemento di una mappa invertita. |
|
Restituisce un iteratore const che punta alla posizione successiva all'ultimo elemento di una mappa invertita. |
|
Inserisce un elemento costruito sul posto nella mappa. |
|
Inserisce un elemento costruito sul posto nella mappa, con un suggerimento sulla posizione. |
|
Restituisce true se una mappa è vuota. |
|
Restituisce l'iteratore successivo all'ultimo valore. |
|
Restituisce una coppia di iteratori. Il primo iteratore della coppia fa riferimento al primo elemento di una map con una chiave maggiore di una chiave specificata. Il secondo iteratore della coppia fa riferimento al primo elemento della map con una chiave uguale o maggiore della chiave specificata. |
|
Rimuove un elemento o un intervallo di elementi di una mappa dalle posizioni specificate. |
|
Restituisce un iteratore che punta alla posizione di un elemento di una mappa con una chiave uguale a una chiave specificata. |
|
Restituisce una copia dell'oggetto allocator utilizzato per costruire la mappa. |
|
Incolla un elemento o un intervallo di elementi nella mappa in una posizione specificata. |
|
Restituisce una copia dell'oggetto di confronto utilizzato per ordinare le chiavi di una mappa. |
|
Restituisce un iteratore al primo elemento di una mappa con un valore della chiave uguale o maggiore di quello di una chiave specificata. |
|
Restituisce la lunghezza massima della mappa. |
|
Restituisce un iteratore che punta al primo elemento di una mappa invertita. |
|
Restituisce un iteratore che punta alla posizione successiva all'ultimo elemento di una mappa invertita. |
|
Restituisce il numero di elementi della mappa. |
|
Scambia gli elementi di due mappe. |
|
Restituisce un iteratore al primo elemento di una mappa con un valore della chiave uguale o maggiore di quello di una chiave specificata. |
|
Recupera una copia dell'oggetto di confronto utilizzato per ordinare i valori di una mappa. |
Operatori
Inserisce un elemento in una mappa con un valore di chiave specificato. |
|
Sostituisce gli elementi di una mappa con una copia di un'altra mappa. |
Requisiti
Intestazione: <map>
Spazio dei nomi: std
Vedere anche
Riferimenti
Sicurezza dei thread nella libreria standard C++