CRBMap クラス

注

Active Template Library (ATL) は引き続きサポートされています。 ただし、機能の追加やドキュメントの更新は行われません。

このクラスは、赤黒バイナリ ツリーを使用するマッピング構造体を表します。

構文

template <typename K,
          typename V,
          class KTraits = CElementTraits<K>,
          class VTraits = CElementTraits<V>>
class CRBMap : public CRBTree<K, V, KTraits, VTraits>

パラメーター

K
キー要素の型。

V
値要素の型。

KTraits
キー要素をコピーまたは移動するために使用されるコード。 詳細については、「CElementTraits クラス」を参照してください。

VTraits
値要素をコピーまたは移動するために使用されるコード。

メンバー

パブリック コンストラクター

名前 説明
CRBMap::CRBMap コンストラクター。
CRBMap::~CRBMap デストラクター。

パブリック メソッド

名前 説明
CRBMap::Lookup このメソッドを呼び出して、CRBMap オブジェクト内のキーまたは値を参照します。
CRBMap::RemoveKey このメソッドを呼び出し、キーを指定して、CRBMap オブジェクトから要素を削除します。
CRBMap::SetAt このメソッドを呼び出すと、マップに要素ペアを挿入できます。

解説

CRBMap では、指定した型のマッピング配列がサポートされます。これにより、キー要素の順序付けられた配列と、関連する値を管理できます。 各キーに関連付けられる値は 1 つのみです。 要素 (キーと値で構成される) は、CRBMap::SetAt メソッドを使用してバイナリ ツリー構造に格納されます。 要素は CRBMap::RemoveKey メソッドを使用して削除できます。これにより、指定されたキー値を持つ要素が削除されます。

ツリーの走査は、CRBTree::GetHeadPosition、CRBTree::GetNext、CRBTree::GetNextValue などのメソッドを使用すると可能になります。

KTraits および VTraits パラメーターは、要素のコピーまたは移動に必要な補足コードを含む特性クラスです。

CRBMap は CRBTree から派生し、赤黒アルゴリズムを使ってバイナリ ツリーを実装します。 CRBMultiMap は、キーごとに複数の値を許可するバリエーションです。 これも CRBTree から派生します。そのため、CRBMap と多くの機能が共有されます。

CRBMap と CRBMultiMap の両方の代替手段が CAtlMap クラスにより提供されます。 ごく少数の要素を格納する必要がある場合は、代わりに CSimpleMap クラスを使用することを検討してください。

さまざまなコレクション クラスとその機能およびパフォーマンス特性の詳細については、「ATL コレクション クラス」を参照してください。

継承階層

CRBTree

CRBMap

要件

ヘッダー: atlcoll.h

CRBMap::CRBMap

コンストラクター。

explicit CRBMap(size_t nBlockSize = 10) throw();

パラメーター

nBlockSize
ブロック サイズ。

解説

nBlockSize パラメーターは、新しい要素が必要な場合に割り当てられるメモリ量の測定結果です。 ブロック サイズが大きくなると、メモリ割り当てルーチンの呼び出しは減少しますが、より多くのリソースが使用されます。 既定では、一度に 10 要素の領域が割り当てられます。

使用できるその他のメソッドの詳細については、基底クラス「CRBTree」のドキュメントを参照してください。

例

// Define a map object which has an
// integer key, a double value, and a
// block size of 5
CRBMap<int, double> myMap(5);

CRBMap::~CRBMap

デストラクター。

~CRBMap() throw();

解説

割り当てられたすべてのリソースを解放します。

使用できるその他のメソッドの詳細については、基底クラス「CRBTree」のドキュメントを参照してください。

CRBMap::Lookup

このメソッドを呼び出して、CRBMap オブジェクト内のキーまたは値を参照します。

bool Lookup(KINARGTYPE key, VOUTARGTYPE value) const throw(...);
const CPair* Lookup(KINARGTYPE key) const throw();
CPair* Lookup(KINARGTYPE key) throw();

パラメーター

key
参照する要素を識別するキーを指定します。

value
参照値を受け取る変数。

戻り値

このメソッドの最初の形式からは、キーが見つかった場合は true、それ以外の場合は false が返されます。 2 番目と 3 番目の形式からは、CPair へのポインターが返されます。

解説

使用できるその他のメソッドの詳細については、基底クラス「CRBTree」のドキュメントを参照してください。

例

// Look up the value for a key of 0
double v;
myMap.Lookup(0,v);

CRBMap::RemoveKey

このメソッドを呼び出し、キーを指定して、CRBMap オブジェクトから要素を削除します。

bool RemoveKey(KINARGTYPE key) throw();

パラメーター

key
削除する要素ペアに対応するキー。

戻り値

キーが見つかって削除された場合は true、失敗した場合は false を返します。

解説

使用できるその他のメソッドの詳細については、基底クラス「CRBTree」のドキュメントを参照してください。

例

// Remove an element, based on the key of 0
ATLVERIFY(myMap.RemoveKey(0) == true);

CRBMap::SetAt

このメソッドを呼び出すと、マップに要素ペアを挿入できます。

POSITION SetAt(
    KINARGTYPE key,
    VINARGTYPE value) throw(...);

パラメーター

key
CRBMap オブジェクトに追加するキー値。

value
CRBMap オブジェクトに追加する値。

戻り値

CRBMap オブジェクト内のキーと値の要素のペアの位置を返します。

解説

SetAt では、一致するキーが見つかった場合に、既存の要素を置き換えます。 キーが見つからない場合は、新しいキーと値のペアが作成されます。

使用できるその他のメソッドの詳細については、基底クラス「CRBTree」のドキュメントを参照してください。

例

// Add an element to the map, with a key of 0
myMap.SetAt(0,1.1);

関連項目

CRBTree クラス
CAtlMap クラス
CRBMultiMap クラス
クラスの概要