任何一個STL算法,都須要得到由一對迭代器(泛型指針)所標識的區間,用以表示操做範圍。這一對迭代器所標示的是個所謂的前閉後開區間,以[first,last)表示。也就是說,整個實際範圍從first開始,知道last-1。迭代器last所指的是「最後一個元素的下一位置」。這種偏移一格的標示法,帶來了許多方便,例以下面兩個STL算法的循環設計,就顯得乾淨利落:算法
1 template <class InputIterator,classT> 2 3 InputIterator find(InputIterator first,InputIterator last,const T& value) 4 5 { 6 7 while(first != last && *first != value) 8 9 ++first; 10 11 returnfirst; 12 13 } 14 15 16 17 template <class InputIterator,class Function> 18 19 Function for_each(InputIterator first,InputIterator last,Function f) 20 21 { 22 23 for(;first != last;++first) 24 25 f(*first); 26 27 returnf; 28 29 }