`easyfind` 課題を通して学んだC++の重要な概念を、インタラクティブに体験しながら復習しましょう。
1. コンテナの内部構造: `vector` vs `list`
コンテナはデータの「入れ物」ですが、その構造によって得意なこと・不得意なことがあります。特に要素の**挿入**時に、内部で何が起こるのかを見てみましょう。
std::vector (連続したメモリ)
std::list (リンクされたメモリ)
2. イテレータ:コンテナを旅する「しおり」
イテレータは、コンテナとアルゴリズムを繋ぐ重要な仲介役です。`begin()` から `end()` まで、要素を一つずつたどる様子をシミュレーションしてみましょう。
it
3. 安全なアクセス: `[]` vs `.at()`
`vector`の要素にアクセスする際、範囲外を指定すると何が起きるでしょうか?速度優先の `[]` と安全第一の `.at()` の違いを体験してください。
10
20
30
4. 主要な関数とアルゴリズム
- `vector.push_back(value)`: `vector`の**末尾**に新しい要素を追加します。手軽で高速です。
- `std::find(begin, end, value)`: 指定された範囲から`value`を探し、最初に見つかった要素の**イテレータ**を返します。見つからなければ`end`イテレータを返します。
5. 品質の保証:テストの重要性
プログラムの正しさを保証するためには、網羅的なテストが不可欠です。Google Testのようなフレームワークを使い、正常系・異常系・境界値など、あらゆるケースを想定したテストを作成する習慣が、堅牢なソフトウェア開発に繋がります。