CRBMap 类

此类表示映射结构,使用红黑二叉树。

语法

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 支持任何给定类型的映射数组,可管理有序的键元素数组及其关联值。 每个键只能有一个关联值。 元素(由键和值组成)使用 CRBMap::SetAt 方法存储在二叉树结构中。 可以使用 CRBMap::RemoveKey 方法删除元素,该方法可删除具有给定键值的元素。

使用 CRBTree::GetHeadPositionCRBTree::GetNextCRBTree::GetNextValue 等方法可以遍历树。

KTraits 和 VTraits 参数是包含复制或移动元素所需的任何补充代码的特征类。

CRBMap 派生自 CRBTree,后者使用红黑算法实现二叉树。 CRBMultiMap 是一种变体,它允许每个键有多个值。 它也源自 CRBTree,因此很多特征与 CRBMap 相同。

CAtlMap 类提供了 CRBMapCRBMultiMap 这两者的替代方法。 只需要存储少量元素时,请考虑改用 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();

参数


指定要查找的元素的键。

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();

参数


与要删除的元素对相对应的键。

返回值

如果找到并删除密钥,则返回 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(...);

参数


要添加到 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 类
类概述