前闭后开区间表示法
2016-01-18 16:17
141 查看
不论什么一个STL算法,都须要获得由一对迭代器(泛型指针)所标识的区间。用以表示操作范围。这一对迭代器所标示的是个所谓的前闭后开区间,以[first,last)表示。
也就是说。整个实际范围从first開始。知道last-1。迭代器last所指的是“最后一个元素的下一位置”。这样的偏移一格的标示法。带来了很多方便,比如以下两个STL算法的循环设计,就显得干净利落:
template <class InputIterator,classT>
InputIterator find(InputIteratorfirst,InputIterator last,const T& value)
{
while(first != last && *first != value)
++first;
returnfirst;
}
template <class InputIterator,classFunction>
Function for_each(InputIteratorfirst,InputIterator last,Function f)
{
for(;first != last;++first)
f(*first);
returnf;
}
不论什么一个STL算法,都须要获得由一对迭代器(泛型指针)所标识的区间。用以表示操作范围。这一对迭代器所标示的是个所谓的前闭后开区间,以[first,last)表示。
也就是说。整个实际范围从first開始。知道last-1。迭代器last所指的是“最后一个元素的下一位置”。这样的偏移一格的标示法。带来了很多方便,比如以下两个STL算法的循环设计,就显得干净利落:
template <class InputIterator,classT>
InputIterator find(InputIteratorfirst,InputIterator last,const T& value)
{
while(first != last && *first != value)
++first;
returnfirst;
}
template <class InputIterator,classFunction>
Function for_each(InputIteratorfirst,InputIterator last,Function f)
{
for(;first != last;++first)
f(*first);
returnf;
}
相关文章推荐
- zxing.dll生成条码
- 【BZOJ 2152】 聪聪可可
- Gradle DSL method not found: 'compile() 解决办法
- iOS关于导航设置的问题
- 一到周末就惰性,这要改啊要改啊
- Hyper-V 角色“操作定义”翻译
- 强制类型转换
- (Error)CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temp
- xml Schema
- JavaSE入门学习1:计算机基础知识
- android之ViewPager的使用详解
- 谈谈Ext JS的组件——布局的用法续二
- Session只读的影响
- SQL Having用法
- 深入学习jQuery Validate表单验证
- 详解PHP ob_start()函数的功能要点
- Collection(List)
- linux shell中大于、小于、等于逻辑表达式介绍
- Java中Runnable和Thread的区别
- iOS开发之如何跳到系统设置里的WiFi界面