C++学习笔记30——反向迭代器
2015-11-28 19:23
204 查看
1,反向迭代器的概念
向后遍历序列的迭代器。这些迭代器颠倒了++和--的含义。类型为: std::reverse_iterator
头文件:
#include <iterator>
容器操作也会提供反向迭代器rend和rbegin,其与end和begin的关系如下图所示:
rbegin指向最后一个元素;rend指向第一个元素前面的位置。
2,反向迭代器的成员函数
(constructor) 构造一个新的迭代器适配器operator= 赋值
base accesses the underlying iterator 转换为正常迭代器,注意转换后指向的是下一位置的元素
operator* 解引用,获取指向的值
operator->
operator[] 通过下标获取元素
++, ++(int) advances or decrements the iterator
+=, +,
--, --(int),
-=, -
存疑:++与 ++(int) 有什么区别?
请注意base的位置发生了后移。
3,反向迭代器的用法
将反向迭代器赋值给find()函数,就变成了从后向前查找。注意,当给find输入反向迭代器后,find返回的也是反向迭代器。
且不能直接将反向迭代器赋值给普通的迭代器。
如下示例为查找序列中最后一个为0的元素:
list<int> ilst = {520, 3132, 0, 3, 5, 9, 0, 8, 7}; list<int> ::reverse_iterator r_iter = find(ilst.rbegin(), ilst.rend(), 0); for (list<int> ::iterator iter = --r_iter.base(); iter != ilst.end(); iter++) { cout << *iter << endl; }输出的是最后一个0到序列末尾的所有元素。
请注意base的位置发生了后移。
相关文章推荐
- C语言开发总结(十四)
- 利用追赶法来求解方程Ax=b的C++程序
- C语言开发总结(十三)
- c语言字符数组与字符串的使用详解
- C语言之基本数据类型
- effective c++为异常安全而努力是值得的(1)
- C语言基础IO操作
- 标准C语言库
- c/c++ c的第一个编译器
- C++ const
- c++ primer 11 泛型算法
- c++ primer 10 关联容器
- C++实现 搜狗实验室新闻语料抽取
- c++ primer 9 顺序容器
- 关于C++中结构体及其指针成员的内存分配和释放
- c++ primer 8 标准IO库
- c++ primer 7 函数
- c++11 线程池系列之一 所需要的join_threads
- c++11 线程池系列之一 所需要的thread_safe_queue
- c++11 线程池系列之一 最简单的线程池