English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Metodi di utilizzo e esempi di C++ map

La map fa parte della STL C++ (Standard Template Library). La map è un contenitore associativo di coppie chiave-valore ordinato, in cui ogni chiave è unica e può essere inserita o rimossa, ma non modificata. Ma il valore associato alla chiave può essere modificato.

Ad esempio:Un contenitore di mappe per dipendenti, in cui l'ID del dipendente è la chiave e il nome è il valore, può essere rappresentato come:

chiavevalore
101Nikita
102Robin
103Deep
104John

sintassi

template < class Key, // map::key_type
           class T, // map::mapped_type
           class Compare = less, // map::key_compare
           class Alloc = allocator<pair> // map::allocator_type
           > class map;

parametro

key:Il tipo dei dati della chiave da memorizzare nella mappa.

type:Il tipo dei dati del valore da memorizzare nella mappa.

compare:Una classe di confronto che accetta due parametri di tipo bool e restituisce un valore. Questo parametro è opzionale, il predicato binario less <“ key”> è il valore predefinito.

alloc:Il tipo dell'oggetto distributore. Questo parametro è opzionale, il valore predefinito è il distributore.

Creazione mappa

E' possibile creare una mappa utilizzando la seguente istruzione:

typedef pair<const Key, T> value_type;

Le seguenti istruzioni verranno utilizzate per creare una chiave di tipoKey tipoevalore valuetipoper value_typedi mappa.Un punto importante è che le chiavi e i valori relativi della mappa vengono sempre inseriti in coppia, non è possibile inserire solo chiavi o solo valori nella mappa.

Esempio 1

#include <cstring>  
#include <iostream>  
#include <map>  
#include <utility>  
using namespace std;  
int main()
{
   mapEmployees;
   // 1) Utilizzo del simbolo di indice dell'array per assegnazione
   Employees[101] = "Nikita";
   Employees[105] = "John";
   Employees[103] = "Dolly";
   Employees[104] = "Deep";
   Employees[102] = "Aman";
   cout << "Employees[104]=" << Employees[104] << endl << endl;
   cout << "Dimensione mappa: " << Employees.size() << endl;
   cout << endl << "Naturale ordine:" << endl;
   for(map::iterator ii = Employees.begin(); ii != Employees.end(); ++ii)
   {
       cout << (*ii).first << " : " << (*ii).second << endl;
   }
   cout << endl << "Ordine inverso:" << endl;
   for(map::reverse_iterator ii=Employees.rbegin(); ii!=Employees.rend(); ++ii)
   {
       cout << (*ii).first << " : " << (*ii).second << endl;
   }
}

Output:

Employees[104]=Deep
Dimensione Map: 5
Ordine naturale:
101: Nikita
102: Aman
103: Dolly
104: Deep
105: John
Ordine inverso:
105: John
104: Deep
103: Dolly
102: Aman
101: Nikita

membro funzione

Ecco l'elenco di tutte le funzioni membro del map:

Costruttore/distruttore

函数描述
constructorsCostruzione del map
destructorsDistruttore del map
operator=Copia gli elementi del map in un altro contenitore map.

Iteratore

函数描述
beginRitorna un iteratore che punta al primo elemento del map.
cbeginRitorna un iteratore costante che punta al primo elemento del map.
endRitorna un iteratore che punta alla fine.
cendRitorna un iteratore costante che punta alla fine.
rbeginRitorna un iteratore che punta alla fine.
rendRitorna un iteratore che punta all'inizio.
crbeginRitorna un iteratore costante che punta alla fine.
crendRitorna un iteratore costante che punta all'inizio.

Capacità

函数描述
emptySe il map è vuoto, restituisce true.
sizeRitorna il numero di elementi nel map.
max_sizeRitorna la capacità massima del map.

Accesso agli elementi

函数描述
operator[]Ricerca l'elemento con la chiave data.
atRicerca l'elemento con la chiave data.

Modificatore

函数描述
insertInserisce l'elemento nel map.
eraseElimina l'elemento dal map.
swapScambia il contenuto del map.
clearElimina tutti gli elementi del map.
emplaceCostruisce un nuovo elemento e lo inserisce nel map.
emplace_hintCostruisce un nuovo elemento tramite un suggerimento e lo inserisce nel map.

Osservatore

函数描述
key_compRitorna una copia dell'oggetto di confronto della chiave.
value_compRitorna una copia dell'oggetto di confronto del valore.

Modalità di operazione

函数描述
findCerca l'elemento con la chiave data.
countOttiene il numero di elementi corrispondenti alla chiave data.
lower_boundRitorna il limite inferiore dell'iteratore.
upper_bound返回迭代器上限一个。
equal_range返回范围元素匹配键给定。

分配器

函数描述
get_allocator返回对象分配器构造map。

函数重载非成员

函数描述
operator==检查两个map是否相等。
operator! MessageLookup检查两个map是否相等。
operator<检查第一个map是否小于其他map。
operator<=检查第一个map是否小于或等于其他map。
operator>检查第一个map是否大于其他map。
operator>=检查第一个map是否大于其他map。
swap()交换元素两个map。