优先使用线性算法或者尽量快的算法:算法
尽量避免劣于线性复杂性的算法,永远不要使用指数复杂性的算法;编程
例外状况: cin/cout/cerr 比较特殊: cout << "hello world" 等价于
(cout, "hello world");数组
使用C++编写可靠的多线程的代码,认真考虑下面的建议:安全
若是编写可能用于多线程的类型,必须完成两项任务:多线程
好比:
void Fun(shared_ptr<Widget> sp1, shared_ptr<Widget> sp2);
Fun(shared_ptr<Widget>(new Widget), shared_ptr<Widget>(new Widget));并发
因为参数初始化的顺序可能由于编译器的不一样而改变,一种极端的状况是:
同时执行了对两个对象的new 操做的内存分配操做,而后再试图调用两个Widget 构造函数。若是这个时候某个构造函数调用抛出异常,另一个对象的内存就永远没有机会释放了。函数
解决方法:绝对不要在一条语句中分配一个以上的资源,应该显式地执行资源分配(好比new),而后立刻将申请分配的资源赋予给管理对象。例如:性能
shared_ptr<Widget> sp1(new Widget);
shared_ptr<Widget> sp2(new Widget);优化
Fun(sp1, sp2);线程