次の方法で共有


配列、リスト、およびマップ クラス

更新 : 2007 年 11 月

データの集計を処理するため、クラス ライブラリには、いろいろなオブジェクトや定義済みの型を保持することのできるコレクション クラス (配列、リスト、マップ) のグループが用意されています。コレクションは動的にサイズ変更されます。これらのクラスは、Windows 用に書かれているかどうかにかかわらず、どのプログラムでも使用できます。ただし、アプリケーション フレームワークにおいてドキュメント クラスを定義するデータ構造を実装する場合に、最も有用です。特化されたコレクション クラスは、これらから派生させたり、テンプレート クラスから作成したりできます。これらのアプローチの詳細については、「コレクション クラス」を参照してください。テンプレート コレクション クラスのリストについては、「配列、リスト、マップのためのテンプレート クラス」を参照してください。

配列はメモリ上に連続的に格納される 1 次元のデータ構造です。与えられた要素のメモリ アドレスは、要素のインデックスに要素のサイズを乗算し、その結果に配列のベースアドレスを加えることにより計算できるので、高速なランダム アクセスをサポートします。ただし、配列中に要素を追加する必要がある場合は、挿入される要素の場所を確保するために、挿入される要素以降全体を移動する必要があるため、大きな負荷がかかります。配列は必要に応じて伸長または縮小されます。

リストは配列に類似してますが、格納方法は大きく異なります。リストの各要素は、双方向リンクを形成する、直前と直後の要素へのポインタも含んでいます。要素の追加や削除は、いくつかのポインタの変更だけで済むため高速です。しかし、リストの検索は、毎回リストの先頭または最後から実行されるため、負荷が大きくなることがあります。

マップはキー値をデータ値に関連付けます。たとえば、マップのキーが文字列で、データがリスト内のポインタであるとします。特定の文字列に関連付けられたポインタを与えるようマップに問い合わせることができます。マップの検索は、キーの検索にハッシュ テーブルを使っているため高速です。アイテムの追加や削除も高速です。また、マップは、しばしば補助のインデックスとしてほかのデータ構造に使われます。MFC は Windows メッセージをそのメッセージのハンドラ関数へのポインタに割り当てる、メッセージ マップと呼ばれる特別な種類のマップを使用します。

参照

概念

クラス ライブラリの概要