Обратный итератор Map C ++

map<int, string>::reverse_iterator& it = temp.rbegin();

it -> указывает на значение ключа мусора

it++ -> указывает на правильное значение ключа

map<int, string>::iterator& it = temp.begin();

it-> указывает на правильное значение ключа от начала.

Пожалуйста помогите.

0

Решение

Ваши утверждения неверны. Если temp тогда не пусто *temp.rbegin() действительно последнее значение на карте, и *temp.begin() это первое значение.

(Тем не менее лежащий в основе Итератор обратного начала — это обычный конечный итератор, но вы не увидите этого, если не вызовете base() на обратном итераторе.)

2

Другие решения

У вас должна быть ошибка в вашем коде, который заполняет карту. Вы можете убедиться в этом, протестировав тривиальный пример, такой как

#include <algorithm>
#include <map>
#include <iostream>
using namespace std;

int main()
{
map<int, char> coll;

// insert elements from 1 to 9
for (int i=1; i<=9; ++i) {
coll[i] = static_cast<char>(i+'a'-1); // because adding 96 is less obvious that we're indexing based at letter a
}

// print all element in reverse order
for_each (coll.rbegin(), coll.rend(),
[]( pair<int, char> mapinfo ) { cout << mapinfo.second << " "; } );
cout << endl;
}
0

По вопросам рекламы [email protected]