映射C++反向迭代器

Map C++ Reverse Iterator

本文关键字:迭代器 C++ 映射      更新时间:2023-10-16
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;
}