第6章 STL算法的高级使用方式

上一章,我们了解了基础STL算法,并且使用简单的例子实践操作了一下这些STL接口:大多数STL算法都将一个或多个迭代器对,作为其输入或输出参数。STL算法也能接受谓词函数,自定义比较函数和转换函数。最后,有些接口会返回迭代器,因为其他算法还会用到这个迭代器。

STL算法旨在保持简单和通用。这样大多数代码就可以使用STL算法,从而让代码看起来简单明了。一个经验丰富的C++开发者对于STL算法非常了解,其会在代码中尽可能使用STL算法,这会让其他人更容易明白这段代码存在的原因,这样能帮助开发者和阅读者产生最大程度的共鸣。一个开发者的大脑会很容易的解析这些普及度很高的算法,这要比解析一段复杂的循环简单的多。虽然实现的主要方式一样,但是细节方面还有不同。

我们使用STL数据结构结构能够很好的避免指针、裸数组和粗犷的结构体。那么接下来我们将升级对STL算法的理解,以便使用通用的STL算法来替代复杂的循环控制符合代码块。因为代码变得短小,在提高可读性的同时,又增加了通用性。这就能避免循环,仅调用std命名空间的算法即可,不过有时也会造成很糟糕的代码。我们不会去衡量代码是否糟糕,只会讨论可能性。

本章,我们将使用STL算法,以创造性的视野去了解现代C++能做些什么。我们将会实现属于我们自己的类STL算法,其能和已存在的数据结构完美结合,并且其他算法也会以同样的方式进行设计。我们也会将现有的STL算法与新算法相融合。这样的结合可以塑造出更加复杂的算法,不过其实现会更加短小,更具有可读性。过程中,我们可以看到STL是多么的简单和优雅。只有了解了所有方法,才能在使用时选择最合适的那一种。