stl
allenxguo
C++
展开
-
Effective STL学习笔记-条款37
用accumulate或for_each来统计区间一般的统计算法可以使用count和count_if来替代,他们告诉你某个区间有多少等于某个值的元素。 而accumulate和for_each是对于区间的的统计。accumulate看个简单例子: list<double> ld = { 0.0, 0.1, 1.1, 2.2, 3.0 }; double sum = std::accu原创 2017-11-27 23:30:32 · 208 阅读 · 0 评论 -
Effective STL学习笔记-条款38
把仿函数类设计为用于值传递仿函数大家都应该知道,看一下for_each的函数声明:template<class InputIterator,class Function>Function // 注意值返回for_each(InputIterator first,InputIterator last,Function f); // 注意值传递但是书写仿函数有一点小约定:你的函数对象应该很小。否则原创 2017-11-30 22:21:02 · 219 阅读 · 0 评论 -
Effective STL学习笔记-条款45-50
注意count、find、binary_search 、lower_bound、upper_bound和equal_range的区别下面这张图可以说明一切,根据情况选择适当的方法:原创 2017-12-09 20:39:39 · 256 阅读 · 0 评论 -
【Effective STL系列】
前言本书是针对STL的经验总结,书中列出了50个条款,绝大多数条款都解释了在使用STL时应该注意的某一个方面的问题,并且详尽地分析了问题的来源、解决方案的优劣。这是作者在教学和实践过程中总结出来的经验,条款中的内容值得我们学习和思考。在学习这本书的时候,我会结合c++一些新特性,对比学习。汇总Item1、仔细选择你的容器 Item8&9、根据容器类型选择合适的删除方式 Item13&14、尽量使原创 2017-08-31 07:26:37 · 293 阅读 · 0 评论 -
Effective STL学习笔记-条款39
用纯函数做判断式判断式是返回bool(或者其他可以隐式转化为bool的东西)。判断式在STL中广泛使用。标准关联容器的比较函数是判断式,判断式函数常常作为参数传递给算法,比如find_if和多种排序算法。纯函数是返回值只依赖于参数的函数。如果f是一个纯函数,x和y是对象,f(x, y)的返回值仅当x或y的值改变的时候才会改变。一个判断式类是一个仿函数类,它的operator()函数是一个判断式原创 2017-12-02 15:11:19 · 184 阅读 · 0 评论 -
Effective STL学习笔记-条款40
使你的仿函数可适配举个例子,假设我有一个Widget*指针的list和一个函数来决定这样的指针是否确定一个感兴趣的Widget:class Widget {};bool isInsteresting(const Widget* pw) { return true; }查找第一个感兴趣的widget,这很容易:auto iter = std::find_if(widgetPtrs.begin(),原创 2017-12-02 15:40:20 · 189 阅读 · 0 评论 -
Effective STL学习笔记-条款43
尽量用算法调用代替手写循环每个算法接受至少一对用来指示将被操作的对象区间的迭代器。比如,min_element可以找出此区间中的最小的值,而accumulate则对区间内的元素作某种形式的整体求和运算(参见条款37),partition将区间内的元素分割为满足和不满足某判决条件的两个部分(参见条款31)。当算法被执行时,它们必须检查指示给它的区间中的每个元素,并且是按你所期望的方式进行的:从区间的起原创 2017-12-05 22:03:52 · 215 阅读 · 0 评论 -
Effective STL学习笔记-条款44
尽量用成员函数代替同名的算法有些容器拥有和STL算法同名的成员函数。关联容器提供了count、find、lower_bound、upper_bound和equal_range,而list提供了remove、remove_if、unique、sort、merge和reverse。大多数情况下,你应该用成员函数代替算法。这样做有两个理由。首先,成员函数更快。其次,比起算法来,它们与容器结合得更好(尤其是原创 2017-12-06 22:50:10 · 208 阅读 · 0 评论