C++ Module 08 Ex00 学習ノート

`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のようなフレームワークを使い、正常系・異常系・境界値など、あらゆるケースを想定したテストを作成する習慣が、堅牢なソフトウェア開発に繋がります。