假设你有一个迭代器,它实际上是一个代理并包含它返回的数据,你怎么能做一个反向迭代器?
解引用运算符的 std::reverse_iterator 实现创建一个临时对象,然后它会递减和取消引用,代码类似于:
reference operator*() const {
iterator tmp = current;
return *--tmp;
}
结果是它返回给您的是一个指向数据的指针,该指针在您掌握它之前就超出了范围。
这带来了相当不幸的结果。
你怎么能绕过这个?