Как пройти карту STL в обратном направлении?

Опубликовано: 30 Декабря, 2021

Карта хранит элементы в отсортированном порядке ключей. Теперь, если мы хотим пройти его в обратном порядке, мы будем использовать reverse_iterator карты.

Синтаксис:

map :: reverse_iterator имя_тератора;

Обратный итератор карты движется в обратном направлении на приращение. Итак, мы укажем reverse_iterator на последний элемент карты, а затем продолжаем увеличивать его, пока не достигнем первого элемента. Для этого мы будем использовать 2 функции-члены std :: map ie.
1. rbegin (): возвращает reverse_iterator, указывающий на последний элемент карты.
2. rend (): возвращает reverse_iterator, указывающий на первый элемент карты.

Теперь для обхода в обратном порядке мы будем перебирать диапазон b / w rbegin () и rend (), используя reverse_iterator.
Обратная итерация в карте:
Пример:

Ввод: (10, «фанаты»), (20, «практика»), (5, «внести свой вклад»)
Вывод: (20, «практика»), (10, «компьютерщики»), (5, «участие»).
// C++ program makes a map to iterate
// elements in reverse order.
#include <bits/stdc++.h>
using namespace std;
int main()
{
// Creating & Initializing a map of String & Ints
map< int , string> mymap;
// Inserting the elements one by one
mymap.insert(make_pair(10, "geeks" ));
mymap.insert(make_pair(20, "practice" ));
mymap.insert(make_pair(5, "contribute" ));
// Create a map reverse iterator
map< int , string>::reverse_iterator it;
// rbegin() returns to the last value of map
for (it = mymap.rbegin(); it != mymap.rend(); it++) {
cout << "(" << it->first << ", "
<< it->second << ")" << endl;
}
return 0;
}
Выход:

(20, practice)
(10, geeks)
(5, contribute)
C++