共用方式為


CRBMap 類別

這個類別代表使用紅黑二進位樹狀結構的對應結構。

語法

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

參數

K
索引鍵項目類型。

V
value 元素類型。

KTraits
用來複製或移動索引鍵元素的程序代碼。 如需詳細資訊,請參閱 CElementTraits 類別

VTraits
用來複製或移動值元素的程序代碼。

成員

公用建構函式

名稱 描述
CRBMap::CRBMap 建構函式。
CRBMap::~CRBMap 解構函式。

公用方法

名稱 描述
CRBMap::Lookup 呼叫此方法以查閱 物件中的 CRBMap 索引鍵或值。
CRBMap::RemoveKey 呼叫這個方法,以從 CRBMap 物件中移除專案,並指定索引鍵。
CRBMap::SetAt 呼叫這個方法,將專案組插入對應中。

備註

CRBMap 支援任何指定類型的對應陣列、管理索引鍵元素的已排序陣列及其相關聯的值。 每個索引鍵只能有一個相關聯的值。 元素(由索引鍵和值組成)會使用 CRBMap::SetAt 方法儲存在二進位樹狀結構中。 您可以使用CRBMap::RemoveKey 方法移除元素,此方法會刪除具有指定索引鍵值的元素。

使用CRBTree::GetHeadPosition、CRBTree::GetNext 和CRBTree::GetNextValue方法,即可周遊樹狀結構。

KTraitsVTraits 參數是特性類別,其中包含複製或行動元素所需的任何補充程式碼。

CRBMap 衍生自 CRBTree,它會使用 Red-Black 演算法實作二進位樹狀結構。 CRBMultiMap 是一種變化,允許每個索引鍵有多個值。 它也衍生自 CRBTree,因此會與 CRBMap共用許多功能。

CAtlMap 類別提供 CRBMultiMap 的替代方案CRBMap。 當只需要儲存少量元素時,請考慮改用 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。 第二個和第三個窗體會傳回 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 類別
類別概觀