C++::My Effective C++
苔花如米小,也學牡丹開。
為區域性變數初始化是一個好的習慣
為只有“一條語句”的程式碼段使用大括號括起來
#define FAIL(msg)\
std::ostringsteam oss;\
oss << msg;\
throw exception(oss.str());
if (y == 0)
FAIL("除數不能為0")
這裡的FAIL("除數不能為0")
看似是一條語句其實是多條語句,在不使用化大括號的情況下,if
的勢力範圍只有一條語句,對本例而言,也就是std::ostringstream oss;
。這時編譯器就會報錯,無法識別oss
。
簡單的雙分支if判斷可以改造為三目運算子
if (x % 2 == 0)
{
return true;
}
else
{
return false;
}
改寫為:
return x % 2 == 2 ? true : false;
思維上視boost::shared_ptr<T>型別物件的“真正”型別為T*
思維上視boost::shared_ptr<T>
的真正型別為T*
,這樣可減少思維的轉換過程。鄒欣老師說過,要把智力消耗在真正值得思考的事情上去,而不是低層次的僅靠記憶便可解決的事情上來。
操縱boost::shared_ptr<T>
型別物件如同操縱T*
。中間不必做任何任何思維和行為上的轉換。不僅如此,boost::shared_ptr<T>
能夠在必要的時刻對建立在heap
上的物件做銷燬操作。
protected
vs private
一般而言用於繼承關係的基類或者存在virtual
函式的基類,它們的成員變數是protected
修飾的,不做為基類或者說不存在virtual
函式的基類,它們的成員變數都是private
的。道理很簡單,被protected
修飾的成員變數,可以繼續被派生類訪問。
牽涉到元素的拼接時,優先選用的容器是list
在所有的容器中,只有list具有把元素從一處連結到另一處而不需要拷貝任何資料的能力
list的客戶之所以選擇使用list,也恰是因為它提供了高效的連結(splice)操作,對應與list的成員函式
splice
何謂高效:把一個區間從一個list連結到另一個list可通過常數時間完成。
list的splice成員函式可以將list2的任意區間的元素連結到list1的任意一個位置(作為起始處)
int main(int, char**)
{
list<int> l1{0, 1, 2, 3, 4}, l2(l1);
// l2的[2, 4]之間的所有元素連結到l1的末尾
l1.splice(l1.end(), l2, find(l2.begin(), l2.end(), 2),
find(l2.rbegin(), l2.rend(), 4).base());
// l2的[2, 4]之間的所有元素連結到l1元素為3的位置之前
l1.splice(find(l1.begin(), l2.end(), 3), l2,
find(l2.begin(), l2.end(), 2), find(l2.begin(), l2.end(), 4));
return 0;
}
相關文章
- effective C++ : CHAPTER 8C++APT
- Effective C++筆記C++筆記
- 【Effective Modern C++】索引C++索引
- 《Effective C++》筆記C++筆記
- Effective C++: Item 32 (轉)C++
- Effective C++: Item 21 (轉)C++
- Effective C++: Item 24 (轉)C++
- effective C++筆記1C++筆記
- Effective C++ 35,36,37C++
- 《Effective C++》讀書筆記C++筆記
- 學懂現代C++——《Effective Modern C++》之轉向現代C++C++
- More Effective C++ 條款4 (轉)C++
- More Effective C++ 條款19 (轉)C++
- More Effective C++ 條款6 (轉)C++
- More effective C++ 條款14 (轉)C++
- More Effective C++ 條款15 (轉)C++
- More Effective C++ 條款2 (轉)C++
- More Effective C++ 條款3 (轉)C++
- More Effective C++ 條款11 (轉)C++
- More effective C++ 條款13 (轉)C++
- More effective C++ 條款12 (轉)C++
- More Effective C++ 條款5 (轉)C++
- More Effective C++ 條款一 (轉)C++
- More Effective C++ 條款17 (轉)C++
- More Effective C++ 條款18 (轉)C++
- More Effective C++ 條款20 (轉)C++
- More Effective C++ 條款21 (轉)C++
- More Effective C++ 條款22 (轉)C++
- More Effective C++ 條款23 (轉)C++
- More Effective C++ 條款24 (轉)C++
- More Effective C++ 條款25 (轉)C++
- More Effective C++ 條款7 (轉)C++
- More Effective C++ 條款8 (轉)C++
- Effective C++ 4.設計與宣告C++
- Effective C++ 筆記(3)資源管理C++筆記
- More Effective C++ 條款28(中) (轉)C++
- More effective c++ 條款10(上) (轉)C++
- More effective c++ 條款10(下) (轉)C++