81 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | ||
| title: Map
 | ||
| localeTitle: карта
 | ||
| ---
 | ||
| ## Введение карты
 | ||
| 
 | ||
| `map` - ассоциативный контейнер, который хранит элементы в паре ключ-значение. Так же, как в `Java` есть коллекция, ассоциативный массив в PHP и так далее.
 | ||
| 
 | ||
| ## Преимущества использования карты
 | ||
| 
 | ||
| *   В нем хранятся только уникальные ключи, и это тоже упорядочено в соответствии с его назначенными критериями сортировки.
 | ||
| *   Поскольку ключи находятся в отсортированном порядке, поэтому поиск элемента на карте через ключ очень быстрый, т.е. он берет логарифмическое время.
 | ||
| *   На `map` будет только одно значение, прикрепленное к каждому ключу.
 | ||
| *   `map` может использоваться как ассоциативные массивы.
 | ||
| *   Он может быть реализован с использованием сбалансированных двоичных деревьев.
 | ||
| 
 | ||
| Вот пример:
 | ||
| 
 | ||
| ```c++
 | ||
| #include <iostream> 
 | ||
|  #include <map> 
 | ||
|  
 | ||
|  using namespace std; 
 | ||
|  
 | ||
|  int main (){ 
 | ||
|   map<char,int> first; 
 | ||
|  
 | ||
|   //initializing 
 | ||
|   first['a']=10; 
 | ||
|   first['b']=20; 
 | ||
|   first['c']=30; 
 | ||
|   first['d']=40; 
 | ||
|  
 | ||
|    map<char, int>::iterator it; 
 | ||
|    for(it=first.begin(); it!=first.end(); ++it){ 
 | ||
|       cout << it->first << " => " << it->second << '\n'; 
 | ||
|    } 
 | ||
|  
 | ||
|   return 0; 
 | ||
|  } 
 | ||
| ```
 | ||
| 
 | ||
| Вывод:
 | ||
| ```
 | ||
| a => 10 
 | ||
|  b => 20 
 | ||
|  c => 30 
 | ||
|  d => 40 
 | ||
| ```
 | ||
| 
 | ||
| ## Создание объекта карты
 | ||
| 
 | ||
| `map<string, int> myMap;`
 | ||
| 
 | ||
| ## вставка
 | ||
| 
 | ||
| Вставка данных с функцией вставки.
 | ||
| 
 | ||
| ```c++
 | ||
| myMap.insert(make_pair("earth", 1)); 
 | ||
|  myMap.insert(make_pair("moon", 2)); 
 | ||
| ```
 | ||
| 
 | ||
| Мы также можем вставлять данные в std :: map, используя оператор \[\], т.е.
 | ||
| 
 | ||
| `myMap["sun"] = 3;`
 | ||
| 
 | ||
| ## Доступ к элементам карты
 | ||
| 
 | ||
| Чтобы получить доступ к элементам карты, вам необходимо создать для нее итератор. Вот пример, как было сказано ранее.
 | ||
| 
 | ||
| ```c++
 | ||
| map<char, int>::iterator it; 
 | ||
|  for(it=first.begin(); it!=first.end(); ++it){ 
 | ||
|   cout << it->first << " => " << it->second << '\n'; 
 | ||
|  } 
 | ||
| ```
 | ||
| 
 | ||
| Здесь вы можете узнать больше о карте: [cpluspluc\_map](http://www.cplusplus.com/reference/map/map/map/)
 | ||
| 
 | ||
| NB: весь код в примере приведен в версии C ++ 11. Вы можете узнать больше о версии C ++ [здесь](http://en.cppreference.com/w/cpp/compiler_support) |