優先使用線性算法或者儘量快的算法:算法
儘量避免劣於線性複雜性的算法,永遠不要使用指數複雜性的算法;編程
例外狀況: 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);線程