Как перебрать map :: crbegin () без использования ключевого слова auto - PullRequest
0 голосов
/ 23 октября 2019

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

#include <bits/stdc++.h>
using namespace std;
int main()
{ 
   map <int,int> mp;

   mp.insert(make_pair(3,30));
   mp.insert(make_pair(4,90));
   mp.insert(make_pair(2,130));
   mp.insert(make_pair(1,20));
   mp.insert(make_pair(5,10)); 

   auto it = mp.crbegin();
   while(it!=mp.crend())
   {
    cout<<it->first <<" "<< it->second <<endl;
     it++;
   }  
}

Что я могу использовать вместо авто ключевое слово ?

Мой код ниже дает мне ошибку компиляции.

#include <bits/stdc++.h>
using namespace std;
int main()
{ 
  map <int,int> mp;
  mp.insert(make_pair(3,30));
  mp.insert(make_pair(4,90));
  mp.insert(make_pair(2,130));
  mp.insert(make_pair(1,20));
  mp.insert(make_pair(5,10)); 

  map<int,int>::iterator it = mp.crbegin();
  while(it!=mp.crend())
  {
    cout<<it->first <<" "<< it->second <<endl;
    it++;
  }  
}

Это возможно или нет?

1 Ответ

2 голосов
/ 23 октября 2019

Правильное имя вложенного типа: const_reverse_iterator. Следовательно, это скомпилирует:

map<int,int>::const_reverse_iterator it = mp.crbegin();

Однако, как бы не было auto, здесь, вероятно, разумно использовать его.

...