任何一个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;
}
时间: 2024-10-12 04:47:02