reverse_iterator
来源:互联网 发布:unity3d塞尔达 编辑:程序博客网 时间:2024/05/22 00:28
stl 容器大都有 reverse_iterator, 用法跟 iterator 一样。然而,可能很少有人考虑过它的实现。
首先, reverse_iterator 大都由 std::reverse_iterator 包装 iterator 生成,如此,同样的遍历循环,reverse_iterator 在每个循环中要调用两次 iterator.operator--, 一次是 reverse_iterator::operator++, 一次是 reverse_iterator::operator*, reverse_iterator 的关键代码大致如下:
referencereverse_iterator<iterator>::operator*() { iterator t = this->iter; return *--t; }reverse_iterator<iterator>&reverse_iterator<iterator>::operator++() { --this->iter; return *this; }
如果不用 reverse_iterator, 如何反向遍历一个序列呢?
template<class BidirectIter, class Op>void reverse_for_each(BidirectIter first, BidirectIter last, Op op) { while (last != first) op(*--last);}
这样的反向遍历,每个循环只调用一次 BidirectIter::operator--, 比使用 reverse_iterator 的 for_each 更高效,除非编译器智能到可以消除那次多余的 operator--
然而这样的代码在极少数情况下也有问题,比如某个容器的 reverse_iterator 不是用 std::reverse_iterator 实现的,并且当正向 iterator 达到 end() 时就不能再调用 operator-- 回到上一个。febird::trbmap 就是这样一个例子,也许febird::trbmap在将来会修正这一点。
- reverse_iterator
- 关于reverse_iterator
- 关于reverse_iterator
- STL : reverse_iterator
- STD::reverse_iterator
- 关于reverse_iterator
- 关于reverse_iterator
- 通过reverse_iterator删除元素
- 反向迭代器reverse_iterator
- iterator与reverse_iterator
- reverse_iterator的补偿机制
- 逆向迭代器reverse_iterator
- Reverse_iterator的使用
- C++ map 中的reverse_iterator
- 逆向迭代器 reverse_iterator
- iterator adapter reverse_iterator
- 浅谈reverse_iterator的base()函数
- 利用reverse_iterator删除string末尾元素
- C++ 沉思录第八章 代码整理,修改(好像书上的代码根本没法用,这只是按他那个思想写的,若发现错误请指正.)
- Byte of Python学习笔记八
- 第六届全国信息技术应用水平大赛比赛说明(电子系统设及团体比赛)(
- MySQL服务无法启动(1067)问题解决
- 微软全球最具价值专家Windows8 讲坛---------开发基于Windows8的第一个C#程序,hello,yincheng,mvp
- reverse_iterator
- 如何让你的SQL运行得更快
- android BroadCastReveceiver
- c#启动EXE文件(简单的)
- html,php等的注释
- EXE进程注入EXE研究
- EXISTS、IN、NOT EXISTS、NOT IN的区别
- POJ 1201 Intervals (差分约束系统)
- 利用java filter 实现业务异常拦截 跳转到错误信息提示页面