2013-07-08 84 views
0
map<int, string>::reverse_iterator& it = temp.rbegin(); 

it - >指向垃圾鍵值地圖C++逆向迭代

it++ - >指向正確的鍵值

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

it - >點從開始正確的密鑰值。

請協助。

+1

Kerrek SB已經給出了正確的答案,但是你發佈的代碼不應該編譯:你不能用臨時值初始化非const引用。 –

回答

2

您的陳述不正確。如果temp不爲空,那麼*temp.rbegin()確實是地圖中的最後一個值,並且*temp.begin()是第一個值。

(然而,底層迭代反向的開始是普通的結束迭代器 - 但你看不到,除非你對反向迭代器調用base()

0

您必須有一個錯誤的代碼填充地圖。你可以通過測試一個簡單的例子來驗證這個例子,比如

#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; 
}