STL是与非
2015-04-01
数据与算法分离,这本不符合OO的思想,但在STL中却显得那么融洽。与Scala的把所有方法都绑定到对象不同,C++ STL的算法库是与容器分离的,如此一来,原本数量相当庞大的algorithm库就没有Scala的容器那么恐怖了,要知道,Scala每一个集合都有20-50个方法,记忆成本是一方面,看着是否融洽、性能是否能够保证又是另一个为人所诟病的地方了。
总的来说,STL的设计还是不错的,大部分算法都是非常实用并且效率非常高的,像copy,find,remove,accumulate的使用频率都是很高。但高效往往都是对于高手来说的,新手的误用反而会降低他们的效率,甚至导致一些很诡异的错误,例如,remove不是和我们想的一样直接删除元素,而是采取了一种高效的实现方式。
因此,如果要使用STL必须要掌握它,是完全的control,而不是翻翻文档就开始动手。
话说最近在刷Leetcode,用到了不少STL的内容,见识了它的强大,也遇到了不少的坑,对其理解增添了不少。顺便翻完了这本书,感觉写的还是不错。玩C++的话,不看完这几本填坑的书基本是不能用的。