摘要:
7 在程序中使用STL 第 43 条:算法调用优先于手写的循环。 调用算法优于手写循环: 效率:算法比手写的循环效率更高。 正确性:手写循环比使用算法容易出错。 可维护性:使用算法的代码更加简洁明了。 例子:P155, 算法的名称表明了它的功能,而 for、while、do 循环不能。 手写循环需要 阅读全文
摘要:
6 函数子、函数子类、函数及其他 第 38 条:遵循按值传递的原则来设计函数子类。 函数指针是按值传递的。 函数对象往往按值传递和返回。所以,编写的函数对象必须尽可能地小巧,否则复制的开销大;函数对象必须是单态的(不是多态),不得使用虚函数。 如果你希望创建一个包含大量数据并且使用了多态性的函数子类 阅读全文
摘要:
5 算法 第 30 条:确保目标区间足够大。(inserter) transform 算法:使用 front_inserter 将导致算法将结果插入到容器的头部,使用 back_inserter 将导致算法将结果插入到容器的尾部。 向容器末尾添加新的对象(使用 back_inserter,适用于所有 阅读全文
摘要:
4 迭代器 第 26 条:iterator 优先于 const_interator、reverse_interator 及 const_reverse_interator。 不同类型的迭代器之间的关系: 尽量使用 iterator 而不是 const 或 reverse 型的迭代器,可以使得容器的使 阅读全文
摘要:
3 关联容器 第 19 条:理解相等(equality)和等价(equivalence)的区别。 find 对”相同“的定义是相等,是以 operator== 为基础的。但 x 和 y 有相等的值并不一定意味着它们的所有数据成员都有相等的值。 set::insert 对“相同”的定义是等价,是以 o 阅读全文