为什么unordered_map没有 rbegin() 或 rend(),而只有 begin() 和 end()

why does unordered_map not have rbegin() or rend(), but only begin() and end()

本文关键字:end begin unordered map 没有 为什么 rbegin rend      更新时间:2023-10-16
使用

begin(),end()和前向迭代器遍历unordered_map似乎很奇怪。

如果是这样,为什么它也没有 rbegin()、rend() 和双向迭代器?有什么技术原因吗?

它是无序的,因此迭代发生的顺序(或应该是)不重要的。

引用

The C++ Standard Library

反向迭代器允许算法通过切换 在内部将增量运算符调用为递减调用 运算符,反之亦然。具有双向迭代器的所有容器 或随机访问迭代器(所有序列容器除外 forward_list和所有关联容器)可以创建反向 迭代器通过其成员函数 rbegin() 和 rend()。自C++11以来, 返回只读迭代器的相应成员函数, 还提供了 crbegin() 和 crend()。

对于forward_lists和无序容器,没有向后迭代 提供了接口(rbegin(),rend()等。原因是 实现只需要单向链表即可通过 元素。