1. パフォーマンスの最適化:`reserve`の効果
`vector`の「再確保」は高コストな処理です。`reserve`で事前にメモリを確保することが、どれほど効果的かシミュレーションで見てみましょう。
`reserve`なし
再確保回数: 0
`reserve(1000)`あり
再確保回数: 0
2. コードの安全性:`explicit`の役割
`explicit`キーワードは、意図しない暗黙の型変換を防ぎます。コンパイラの気持ちになって、その挙動の違いを確かめてみましょう。
`explicit`なし
void someFunc(Span s);
// 以下のコードは...
someFunc(10);
// 以下のコードは...
someFunc(10);
`explicit`あり
void someFunc(Span s);
// 以下のコードは...
someFunc(10);
// 以下のコードは...
someFunc(10);
3. 例外安全性:Copy-and-Swapイディオム
代入演算子を安全に実装するための強力なテクニックです。`a = b;` を実行した際の、オブジェクト内部のデータの流れをアニメーションで見てみましょう。
Data A
Object 'a'
Data B
Object 'b'
Temp Copy
4. 範囲指定による一括追加
複数の要素を追加する場合、`for`ループで`push_back`を繰り返すより、イテレータ範囲を指定して`insert`する方が効率的です。その速度差を計測してみましょう。
ループで`push_back`
- ms
範囲`insert`
- ms