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等方法,即可周遊樹狀結構。
KTraits 和 VTraits 參數是特性類別,其中包含複製或行動元素所需的任何補充程式碼。
CRBMap
衍生自 CRBTree,它會使用 Red-Black 演算法實作二進位樹狀結構。 CRBMultiMap 是一種變化,允許每個索引鍵有多個值。 它也衍生自 CRBTree
,因此會與 CRBMap
共用許多功能。
CAtlMap 類別提供 和 CRBMultiMap
的替代方案CRBMap
。 當只需要儲存少量元素時,請考慮改用 CSimpleMap 類別。
如需各種集合類別及其特性和效能特性的更完整討論,請參閱 ATL 集合類別。
繼承階層架構
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);