使用begin(),end()和forward迭代器迭代unordered_map
似乎很奇怪。
如果是这样,为什么它也没有rbegin(),rend()和双向迭代器呢? 有什么技术原因吗?
答案 0 :(得分:21)
它是无序的,因此迭代发生的顺序是(或应该)不重要。
答案 1 :(得分:10)
引自The C++ Standard Library
反向迭代器让算法通过切换来反向操作 在内部调用增量运算符进入减量调用 运算符,反之亦然。所有带双向迭代器的容器 或随机访问迭代器(除了以外的所有序列容器) forward_list和所有关联容器)可以创建反向 迭代器通过它们的成员函数rbegin()和rend()。从C ++ 11开始, 返回只读迭代器的相应成员函数, 还提供了crbegin()和crend()。
对于forward_lists和无序容器,没有向后迭代 提供了接口(rbegin(),rend()等)。原因是 实现只需要单独链接列表来完成 元件。