0
map<int, string>::reverse_iterator& it = temp.rbegin();
it
- >指向垃圾鍵值地圖C++逆向迭代
it++
- >指向正確的鍵值
map<int, string>::iterator& it = temp.begin();
it
- >點從開始正確的密鑰值。
請協助。
map<int, string>::reverse_iterator& it = temp.rbegin();
it
- >指向垃圾鍵值地圖C++逆向迭代
it++
- >指向正確的鍵值
map<int, string>::iterator& it = temp.begin();
it
- >點從開始正確的密鑰值。
請協助。
您的陳述不正確。如果temp
不爲空,那麼*temp.rbegin()
確實是地圖中的最後一個值,並且*temp.begin()
是第一個值。
(然而,底層迭代反向的開始是普通的結束迭代器 - 但你看不到,除非你對反向迭代器調用base()
)
您必須有一個錯誤的代碼填充地圖。你可以通過測試一個簡單的例子來驗證這個例子,比如
#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;
}
Kerrek SB已經給出了正確的答案,但是你發佈的代碼不應該編譯:你不能用臨時值初始化非const引用。 –