摘要: 条款43:算法调用优先于手写循环class Widget {public: bool test();};vector vec;算法调用:for_each(vec.begin(), vec.end(), mem_fun_ref(&Widget::test));手写循环:for(auto it =... 阅读全文
posted @ 2013-11-26 21:43 skyline09 阅读(458) 评论(0) 推荐(0) 编辑
摘要: 条款38:遵循按值传递的原则来设计仿函数仿函数都是 pass-by-valueFunction for_each(InputIterator first, InputIterator last, Function f); //f按值传递, 结果按值返回函数对象按值传递和按值返回,所以函数对象要尽可能... 阅读全文
posted @ 2013-11-26 20:44 skyline09 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 条款30:确保目标区间足够大条款31:了解各种与排序有关的选择//使用unaryPred划分输入序列,使得unaryPred为真的元素放在序列开头partition(beg, end, unaryPred); //对[beg, mid)个元素进行排序,排序后[beg, end)范围元素... 阅读全文
posted @ 2013-11-26 20:11 skyline09 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 条款26:iterator 优先于 const_iterator, reverse_iterator, const_reverse_iteratoriterator, reverse_iterator 对应于 T*const_iterator, const_reverse_iterator 对应于 ... 阅读全文
posted @ 2013-11-26 20:02 skyline09 阅读(353) 评论(0) 推荐(0) 编辑
摘要: 条款19:理解相等(equality)和等价(equivalence)的区别相等的概念是基于 operator== 的,如果 operator== 的实现不正确,会导致并不实际相等等价关系是以"在已排好序的区间中对象值的相对顺序"为基础的,关联容器默认是以 operator ssp;其实是: set... 阅读全文
posted @ 2013-11-26 19:55 skyline09 阅读(419) 评论(0) 推荐(0) 编辑
摘要: 条款13:vector、string优先于动态分配数组string是basic_string的类型定义许多string的背后实现都采用了引用计数的技术,可以消除不必要的内存拷贝和不必要的字符拷贝条款14:使用 reserve 来避免vector容器不必要的重新分配vector和string的 rea... 阅读全文
posted @ 2013-11-26 19:48 skyline09 阅读(1495) 评论(0) 推荐(0) 编辑
摘要: 0.前言随机访问迭代器: vector、string、dequeSTL的一个革命性的方面就是它的计算复杂性保证条款01:慎重选择容器类型c++提供的容器:标准STL序列容器:vector、string、deque、list标准STL关联容器:set、multiset、map、multimap非标准S... 阅读全文
posted @ 2013-11-26 19:35 skyline09 阅读(555) 评论(0) 推荐(0) 编辑
摘要: 条款32:确定你的 public 继承塑模出 is-a 关系public inheritance 意味着 is-a 关系class Derived 以 public 形式继承 class Base, 则每一个 Derived对象同时也是一个 Base对象,反之不成立可以施行于Base class 对... 阅读全文
posted @ 2013-11-26 17:35 skyline09 阅读(399) 评论(0) 推荐(0) 编辑
摘要: 条款26:尽可能延后变量定义式的出现时间尽可能延后变量的定义,知道非得使用该变量的前一刻为止方法A:Widget W;for (int i = 0; i (expression):唯一可以将对象的常量性移除(将 const 转 non-const)dynamic_cast(expression):除... 阅读全文
posted @ 2013-11-26 16:45 skyline09 阅读(473) 评论(0) 推荐(0) 编辑
摘要: 条款18:让接口容易被正确使用,不易被误用必须考虑客户可能做出什么样的错误(防御式编程)std:shared_ptr会自动使用它的"每个指针专属的删除器",消除了"cross-DLL problem"(对象在DLL中被 new 创建,却在另一个DLL中 delete 销毁)条款19:设计 class... 阅读全文
posted @ 2013-11-26 14:25 skyline09 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 条款13:以对象管理资源资源包括:动态分配内存、文件描述符、网络socket、互斥锁、数据库连接把资源放进对象内,可以依赖c++的"析构函数自动调用机制"确保资源被释放智能指针: 是一个"类指针"对象,引用计数型指针,当引用对象数为0时,自动删除该资源std::shared_ptr pClass(n... 阅读全文
posted @ 2013-11-26 14:10 skyline09 阅读(391) 评论(0) 推荐(0) 编辑
摘要: 条款05:了解c++默默编写并调用了哪些函数编译器可以暗自为 class 创建default构造函数,copy构造函数,copy assignment操作和析构函数所有这些函数都是 public 并且 inline编译器自动生成的析构函数是non-virtual 的编写一个空类 class Widg... 阅读全文
posted @ 2013-11-26 13:43 skyline09 阅读(490) 评论(0) 推荐(0) 编辑
摘要: 条款01:c++多范式编程语言条款02:尽量以 const, enum, inline 替换#define1. 提供类型安全检查2. 去除函数调用开销3. 避免宏的二义性const double pi = 3.1415926;const std::string authorName("wwwjieo... 阅读全文
posted @ 2013-11-26 11:30 skyline09 阅读(889) 评论(0) 推荐(0) 编辑