Обмен содержимым контейнеров map и multimap

Обмен содержимым контейнеров map и multimap


Для того, что бы поменять содержимое контейнеров местами, можно использовать следующий код:

map<char,int> MapFirst,MapSecond,temp;

temp=MapFirst;

MapFirst=MapSecond;

MapSecond=temp;

Но в С++ предусмотрена для этого специальная функция map::swap(), которая позволяет менять содержимое контейнеров map и multimap местами, сейчас покажу как - https://ideone.com/A8UhZC

При запуске кода можете видеть следующий вывод программы:

В строках 10, 11 мы заполняем контейнер MapFirst, в строках 13,14 контейнер MapSecond.

Обратите внимание на еще один вариант заполнения контейнера map. В квадратных скобках мы указываем наш ключ, а после знака равенства — значение.

В строках 19-23, выводим на экран содержимое наших контейнеров. В строке 25 происходит смена элементов двух контейнеров. Теперь контейнер MapFirst содержит то, что содержал контейнер MapSecond, а MapSecond содержит значения контейнера MapFirst.

Важно: функция map::swap() работает только в случае, если контейнеры относятся к одному типу т. е., если вы напишите, что-то вроде этого:

map<char,int> MapFirst;

map<char,float> MapSecond;

компилятор выдаст ошибку. Будьте внимательны, не допускайте подобного.

В строках 30-34 осуществляется вывод на экран. Альтернативный вариант функции map::swap() показан в строке 36 и вывод в строках 41-45 показывающий, что функция отработала верно. Для контейнера multimap все работает так же, как и для контейнера map.


На сегодня всё ;)

Обязательно постарайтесь запустить код, чтобы понять основные принципы работы! Это важно для понимания следующих уроков.

Ваш developer

Report Page