使用begin()、end()和前向迭代器来遍历unordered_map看起来很奇怪。如果是这样,为什么它没有rbegin()、rend()和双向迭代器呢?是否有技术上的原因?
这是一个无序的数据结构,所以遍历的顺序(或应该是)不重要。
摘自The C++ Standard Library
反向迭代器通过将增量运算符的调用内部转换为减量运算符的调用,以及反之,使算法能够向后执行。所有具有双向迭代器或随机访问迭代器的容器(所有序列容器,除了forward_list 和所有关联容器)都可以通过它们的成员函数 rbegin() 和 rend() 创建反向迭代器。自C ++11以来,还提供了相应的返回只读迭代器的成员函数 crbegin() 和 crend()。
对于 forward_list 和无序容器,没有提供反向迭代界面(rbegin(),rend()等)。原因是实现只需要单向链表遍历元素即可。