为什么unordered_map没有 rbegin() 或 rend(),而只有 begin() 和 end()
why does unordered_map not have rbegin() or rend(), but only begin() and end()
使用
begin(),end()和前向迭代器遍历unordered_map
似乎很奇怪。
如果是这样,为什么它也没有 rbegin()、rend() 和双向迭代器?有什么技术原因吗?
它是无序的,因此迭代发生的顺序(或应该是)不重要的。
引用
自The C++ Standard Library
反向迭代器允许算法通过切换 在内部将增量运算符调用为递减调用 运算符,反之亦然。具有双向迭代器的所有容器 或随机访问迭代器(所有序列容器除外 forward_list和所有关联容器)可以创建反向 迭代器通过其成员函数 rbegin() 和 rend()。自C++11以来, 返回只读迭代器的相应成员函数, 还提供了 crbegin() 和 crend()。
对于forward_lists和无序容器,没有向后迭代 提供了接口(rbegin(),rend()等。原因是 实现只需要单向链表即可通过 元素。
相关文章:
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- remove(str.begin(), str.end(), );无法正常工作(我正在使用视觉工作室 2012)
- 了解向量中的 .begin 和 .end
- C++ const char with .begin() and .end()
- 为什么 std::find( s.begin(), s.end(), val ) 比集合 s 的 s.find(val) 慢 1000 倍<int>?
- 如何使用vector.begin()和vector.end()遍历矩阵?
- 如何实现 cbegin() 和 cend() 从 begin() 和 end() ?
- C++ - 空的 std::list begin() 和 end() 不相等
- 为什么std::begin()和std::end()适用于固定数组,而不适用于动态数组
- C++代码"x.erase(std::remove(x.begin(), x.end(), ), x.end())"是如何工作的?
- begin(),end()和cbegin(),cend()之间的区别是什么?
- 在模板化数据结构上调用 begin() 或 end()
- 重载 std::begin() 和 std::end() 用于非数组
- 使用 std::set 的 .begin() 和 .end() 函数会产生意想不到的结果
- 使用范围V3视图来实现begin()/end()方法
- 为 C++ 选择 begin() 和 end()
- std::begin() 和 std::end() 不适用于类中的未知长度数组
- 在 std::list 中,std::d istance(it.begin(), std::p rev(it.end()
- 使用迭代器的二叉搜索,为什么我们使用"(end - begin)/2"?