effective stl

effective STL

花了大概两周的时间通读了一下《effective stl》这本书,总结一下,对于经常用STL容器的人来说,这本书还是值得一读,特别是常用STL,但确没全面了解过STL的人来讲。具体来讲,同一种功能可能有很多种实现,比如最简单使有for_each替代手写循环,很简单的经验之淡,但是对stl不熟的人可能会惊讶,C++也有for_each函数吗?(哈哈,我就是这种)

下面着重讲几条个人认为比较有实用价值的条款:

  1. 慎重选择容器类型,根据需要选择高效的容器类型。有些场景看似随便选一个容器都行,特别对于那些经常重复执行的代码,慎重考虑最优选择,而不是随性而为。
  2. 尽量使用区间成员函数,而不是多次使用与之对应的单元素成员函数,原因是这样更加高效。
  3. 使用reserve来避免不必要的内存重新分配,比如使用vector push_back之前预估size大小使用reserve来预分配内存,而不是使用一个空的vector不断的push_back。
  4. 详细了解vector bool,它是用位来存储bool值的,原书建议尽量避免使用,个人觉得避免倒是没必要,只要使用的时候了解这个特性就好了,避免踩坑。
  5. 当效率至关重要时,请在map::operator[]与map::insert之间做出谨慎选择。选择的标准是:当向map中添加元素时,要优先选择insert; 当更新已经在map中的元素的值时,要优先选[]。
  6. 算法调用优先于手写的循环,调用算法效率高、正确性高、可维护性好,for_each、transform之类的算法代替循环。

猜你喜欢

转载自blog.csdn.net/zzl_python/article/details/82875195