Els mapes formen part de la C++ STL (Standard Template Library). Els mapes són els contenidors associatius que emmagatzemen parells clau-valor ordenats, en els quals cada clau és única i es pot inserir o suprimir però no es pot modificar. Els valors associats a les claus es poden canviar.
Per exemple: Un mapa d'empleats on l'identificador de l'empleat és la clau i el nom és el valor es pot representar com:
| Claus | Valors |
|---|---|
| 101 | Nikita |
| 102 | Robin |
| 103 | Profund |
| 104 | Joan |
Sintaxi
template <class key, map::key_type class t, map::mapped_type compare="less," map::key_compare alloc="allocator<pair"> // map::allocator_type > class map; </class>
Paràmetre
clau: El tipus de dades clau que s'ha d'emmagatzemar al mapa.
tipus: El tipus de dades de valor que s'ha d'emmagatzemar al mapa.
compara: Una classe de comparació que pren dos arguments del mateix tipus bool i retorna un valor. Aquest argument és opcional i el predicat binari menys és el valor per defecte.
alloc: Tipus d'objecte assignador. Aquest argument és opcional i el valor per defecte és allocator .
subcadena en bash
Creació d'un mapa
Els mapes es poden crear fàcilment mitjançant la declaració següent:
typedef pair value_type;
El formulari anterior servirà per crear un mapa amb clau de tipus Tipus de clau i valor del tipus tipus de valor. Una cosa important és que la clau d'un mapa i els valors corresponents s'insereixen sempre com a parell, no podeu inserir només una clau o només un valor en un mapa.
Exemple 1
#include #include #include #include using namespace std; int main() { map Employees; // 1) Assignment using array index notation Employees[101] = 'Nikita'; Employees[105] = 'John'; Employees[103] = 'Dolly'; Employees[104] = 'Deep'; Employees[102] = 'Aman'; cout << 'Employees[104]=' << Employees[104] << endl << endl; cout << 'Map size: ' << Employees.size() << endl; cout << endl << 'Natural Order:' << endl; for( map::iterator ii=Employees.begin(); ii!=Employees.end(); ++ii) { cout << (*ii).first << ': ' << (*ii).second << endl; } cout << endl << 'Reverse Order:' << endl; for( map::reverse_iterator ii=Employees.rbegin(); ii!=Employees.rend(); ++ii) { cout << (*ii).first << ': ' << (*ii).second << endl; } } Sortida:
Employees[104]=Deep Map size: 5 Natural Order: 101: Nikita 102: Aman 103: Dolly 104: Deep 105: John Reverse Order: 105: John 104: Deep 103: Dolly 102: Aman 101: Nikita
Funcions dels membres
A continuació es mostra la llista de totes les funcions membres del mapa:
Constructor/Destructor
| Funcions | Descripció |
|---|---|
| constructors | Construeix el mapa |
| destructors | Destructor de mapes |
| operador= | Copia elements del mapa a un altre mapa. |
Iteradors
| Funcions | Descripció |
|---|---|
| començar | Retorna un iterador que apunta al primer element del mapa. |
| cbegin | Retorna un iterador constant que apunta al primer element del mapa. |
| final | Retorna un iterador que apunta al final passat. |
| uns quants | Retorna un iterador constant que apunta al final passat. |
| començar | Retorna un iterador invers que apunta al final. |
| fa | Retorna un iterador invers que apunta al principi. |
| crbegin | Retorna un iterador invers constant que apunta al final. |
| creure | Retorna un iterador invers constant que apunta al principi. |
Capacitat
| Funcions | Descripció |
|---|---|
| buit | Retorna true si el mapa està buit. |
| mida | Retorna el nombre d'elements del mapa. |
| mida_màx | Retorna la mida màxima del mapa. |
Accés als elements
| Funcions | Descripció |
|---|---|
| operador[] | Recupera l'element amb la clau donada. |
| a les | Recupera l'element amb la clau donada. |
Modificadors
| Funcions | Descripció |
|---|---|
| inserir | Insereix un element al mapa. |
| esborrar | Esborra elements del mapa. |
| intercanviar | Intercanviar el contingut del mapa. |
| clar | Elimina tots els elements del mapa. |
| ubicació | Construeix i inseriu els nous elements al mapa. |
| emplace_hint | Construeix i inseriu nous elements al mapa mitjançant una pista. |
Observadors
| Funcions | Descripció |
|---|---|
| key_comp | Retorna una còpia de l'objecte de comparació de claus. |
| valor_comp | Retorna una còpia de l'objecte de comparació de valors. |
Operacions
| Funcions | Descripció |
|---|---|
| trobar | Cerca un element amb la clau donada. |
| comptar | Obté el nombre d'elements que coincideixen amb la clau donada. |
| cota inferior | Retorna un iterador al límit inferior. |
| límit_superior | Retorna un iterador al límit superior. |
| rang_igual | Retorna l'interval d'elements que coincideixen amb la clau donada. |
Assignador
| Funcions | Descripció |
|---|---|
| get_allocator | Retorna un objecte assignador que s'utilitza per construir el mapa. |
Funcions sobrecarregades no membres
| Funcions | Descripció |
|---|---|
| operador== | Comprova si els dos mapes són iguals o no. |
| operador!= | Comprova si els dos mapes són iguals o no. |
| operador < | Comprova si el primer mapa és menor que un altre o no. |
| operador<=< td> | Comprova si el primer mapa és menor o igual que un altre o no. | =<>
| operador> | Comprova si el primer mapa és més gran que un altre o no. |
| operador>= | Comprova si el primer mapa és més gran que igual a un altre o no. |
| intercanviar () | Canvia l'element de dos mapes. |