Maps are part of the C++ STL (Standard Template Library). Maps are the associative containers that store sorted key-value pair, in which each key is unique and it can be inserted or deleted but cannot be altered. Values associated with keys can be changed.
Example
For example: A map of Employees where employee ID is the key and name is the value can be represented as.
	
		
			| Keys | Values | 
		
			| 101 | Nikita | 
		
			| 102 | Robin | 
		
			| 103 | Deep | 
		
			| 104 | John | 
	
Syntax
template < class Key,                                             // map::key_type  
           class T,                                                     // map::mapped_type  
           class Compare = less,                        // map::key_compare  
           class Alloc = allocator >    // map::allocator_type  
           > class map;  Parameter
key: The key data type to be stored in the map.
type: The data type of value to be stored in the map.
compare: A comparison class that takes two arguments of the same type bool and returns a value. This argument is optional and the binary predicate less<"key"> is the default value.
alloc: Type of the allocator object. This argument is optional and the default value is allocator .
Creating a map
Maps can easily be created using the following statement:
typedef pair<const Key, T> value_type;
The above form will use to create a map with key of type Key type and value of type value type. One important thing is that key of a map and corresponding values are always inserted as a pair, you cannot insert only key or just a value in a map.
Example
snippet
#include <string.h>  
#include <iostream>  
#include <map>  
#include <utility>  
using namespace std;  
int main()  
{  
   map<int, string> 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;  
   }  
}  Output
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
Member Functions
Below is the list of all member functions of map:
Constructor/Destructor
	
		
			| Functions | Description | 
		
			| constructors | Construct map | 
		
			| destructors | Map destructor | 
		
			| operator= | Copy elements of the map to another map. | 
	
Iterators
	
		
			| Functions | Description | 
		
			| begin | Returns an iterator pointing to the first element in the map. | 
		
			| cbegin | Returns a const iterator pointing to the first element in the map. | 
		
			| end | Returns an iterator pointing to the past-end. | 
		
			| cend | Returns a constant iterator pointing to the past-end. | 
		
			| rbegin | Returns a reverse iterator pointing to the end. | 
		
			| rend | Returns a reverse iterator pointing to the beginning. | 
		
			| crbegin | Returns a constant reverse iterator pointing to the end. | 
		
			| crend | Returns a constant reverse iterator pointing to the beginning. | 
	
Capacity
	
		
			| Functions | Description | 
		
			| empty | Returns true if map is empty. | 
		
			| size | Returns the number of elements in the map. | 
		
			| max_size | Returns the maximum size of the map. | 
	
Element Access
	
		
			| Functions | Description | 
		
			| operator[] | Retrieve the element with given key. | 
		
			| at | Retrieve the element with given key. | 
	
Modifiers
	
		
			| Functions | Description | 
		
			| insert | Insert element in the map. | 
		
			| erase | Erase elements from the map. | 
		
			| swap | Exchange the content of the map. | 
		
			| clear | Delete all the elements of the map. | 
		
			| emplace | Construct and insert the new elements into the map. | 
		
			| emplace_hint | Construct and insert new elements into the map by hint. | 
	
Observers
	
		
			| Functions | Description | 
		
			| key_comp | Return a copy of key comparison object. | 
		
			| value_comp | Return a copy of value comparison object. | 
	
Operations
	
		
			| Functions | Description | 
		
			| find | Search for an element with given key. | 
		
			| count | Gets the number of elements matching with given key. | 
		
			| lower_bound | Returns an iterator to lower bound. | 
		
			| upper_bound | Returns an iterator to upper bound. | 
		
			| equal_range | Returns the range of elements matches with given key. | 
	
Allocator
	
		
			| Functions | Description | 
		
			| get_allocator | Returns an allocator object that is used to construct the map. | 
	
Non-Member Overloaded Functions
	
		
			| Functions | Description | 
		
			| operator== | Checks whether the two maps are equal or not. | 
		
			| operator!= | Checks whether the two maps are equal or not. | 
		
			| operator< | Checks whether the first map is less than other or not. | 
		
			| operator<= | Checks whether the first map is less than or equal to other or not. | 
		
			| operator> | Checks whether the first map is greater than other or not. | 
		
			| operator>= | Checks whether the first map is greater than equal to other or not. | 
		
			| swap() | Exchanges the element of two maps. |