[英]Map C++ Reverse Iterator
map<int, string>::reverse_iterator& it = temp.rbegin();
it
- >指向垃圾密钥值
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.