以下从实用性进行总结:
首先是《Effective STL》总结
1、算法调用优先手写的循环。比如用for_each算法替换手写的for循环等。
2、容器的成员函数优先于同名的算法。因为成员函数更快且与容器结合更精密。比如关联容器提供了count、find算法,list容器提供了remove、remove_if等。
比如用stl通用算法find操作map时,不如直接调用map自身的find方法。
3、掌握men_fun和men_fun_ref的使用。
4、调用empty而不是检查size()是否为0。
5、删除容器中的元素时
(1)容器为vector、list、string时,使用earse-remove。因为这些容器调用remove并未删掉元素,只是把该元素移到末尾,且remove调用后返回的迭代器指向了这个待删的元素。
(2)容器为list时,直接使用list::remove方法。
(3)容器为关联容器时,使用它的earse成员函数。
6、条件删除元素时
(1)容器为vector、list、string时,使用earse-remove_if。因为这些容器调用remove_if并未删掉元素,只是把该元素移到末尾,且remove调用后返回的迭代器指向了这个待删的元素。
(2)容器为list时,直接使用list::remove_if方法。