STL中算法是基于迭代器来实现的。

有了容器中迭代器的实现(对operator*、operator++等的重载),STL中大部分算法实现就显得很简单了。

先看一例关于find算法的实现:

 1 template <class InputIterator, class T>
 2 InputIterator find(InputIterator first, InputIterator last, const T& value) {
 3     // 直接利用iterator中的operator++、operator*、operator!=实现
 4     // 默认使用class T的operator!=
 5     while (first != last && *first != value) ++first; 
 6         return first;
 7 }
 8 
 9 template <class InputIterator, class Predicate>
10 InputIterator find_if(InputIterator first, InputIterator last,
11                       Predicate pred) {
12     // 能接受一个仿函数 用来指定find的条件
13     while (first != last && !pred(*first)) ++first;
14         return first;
15 }
View Code

相关文章: