CSimpleMap 类

此类提供对简单映射数组的支持。

语法

template <class TKey, class TVal, class TEqual = CSimpleMapEqualHelper<TKey, TVal>>
class CSimpleMap

参数

TKey
键元素类型。

TVal
值元素类型。

TEqual
一个特征对象,定义 T 类型的元素的相等性测试。

成员

公共 Typedef

名称 描述
CSimpleMap::_ArrayElementType 值类型的 Typedef。
CSimpleMap::_ArrayKeyType 键类型的 Typedef。

公共构造函数

名称 描述
CSimpleMap::CSimpleMap 构造函数。
CSimpleMap::~CSimpleMap 析构函数。

公共方法

名称 描述
CSimpleMap::Add 向映射数组添加键和关联值。
CSimpleMap::FindKey 查找特定键。
CSimpleMap::FindVal 查找特定值。
CSimpleMap::GetKeyAt 检索指定键。
CSimpleMap::GetSize 返回映射数组中的条目数。
CSimpleMap::GetValueAt 检索指定值。
CSimpleMap::Lookup 返回与给定键关联的值。
CSimpleMap::Remove 删除键和匹配值。
CSimpleMap::RemoveAll 删除所有键和值。
CSimpleMap::RemoveAt 删除特定的键和匹配值。
CSimpleMap::ReverseLookup 返回与给定值关联的键。
CSimpleMap::SetAt 设置与给定键关联的值。
CSimpleMap::SetAtIndex 设置特定的键和值。

注解

CSimpleMap 支持任何给定类型 T 的简单映射数组,管理无序的键元素数组及其关联值。

参数 TEqual 提供了一种方法,可以为 T 类型的两个元素定义相等函数。 通过创建类似于 CSimpleMapEqualHelper 的类,可以更改任何给定数组的相等测试的行为。 例如,在处理指针数组时,将相等定义为取决于指针引用的值可能很有用。 默认实现使用 operator==()。

同时提供 CSimpleMapCSimpleArray 以便与以前的 ATL 版本兼容。CAtlArrayCAtlMap 提供更完整且更高效的集合实现。

与 ATL 和 MFC 中的其他映射集合不同,此类通过简单的数组实现,查找搜索需要线性搜索。 当数组包含大量元素时,应使用 CAtlMap

要求

标头:atlsimpcoll.h

示例

// Create a map with an integer key and character pointer value
CSimpleMap<int, char *> iArray;   

CSimpleMap::Add

向映射数组添加键和关联值。

BOOL Add(const TKey& key, const TVal& val);

参数


键。

val
关联的值。

返回值

如果已成功添加键和值,则返回 TRUE;否则返回 FALSE。

备注

添加的每个键值对都会导致映射数组内存释放和重新分配,以确保始终连续存储每个键值对的数据。 也就是说,第二个键元素始终直接跟随内存中的第一个键元素,依此类推。

CSimpleMap::_ArrayElementType

键类型的 Typedef。

typedef TVal _ArrayElementType;

CSimpleMap::_ArrayKeyType

值类型的 Typedef。

typedef TKey _ArrayKeyType;

CSimpleMap::CSimpleMap

构造函数。

CSimpleMap();

注解

初始化数据成员。

CSimpleMap::~CSimpleMap

析构函数。

~CSimpleMap();

注解

释放所有已分配的资源。

CSimpleMap::FindKey

查找特定键。

int FindKey(const TKey& key) const;

参数


要搜索的键。

返回值

如果找到键,则返回该键的索引;否则返回 -1。

CSimpleMap::FindVal

查找特定值。

int FindVal(const TVal& val) const;

参数

val
要搜索的值。

返回值

如果找到值,则返回该值的索引;否则返回 -1。

CSimpleMap::GetKeyAt

检索指定索引处的键。

TKey& GetKeyAt(int nIndex) const;

参数

nIndex
要返回的键的索引。

返回值

返回 nIndex 所引用的键。

备注

nIndex 传递的索引必须有效,才能使返回值有意义。

CSimpleMap::GetSize

返回映射数组中的条目数。

int GetSize() const;

返回值

返回映射数组中的条目数(一个键值对是一个条目)。

CSimpleMap::GetValueAt

检索特定索引处的值。

TVal& GetValueAt(int nIndex) const;

参数

nIndex
要返回的值的索引。

返回值

返回由 nIndex 引用的值。

备注

nIndex 传递的索引必须有效,才能使返回值有意义。

CSimpleMap::Lookup

返回与给定键关联的值。

TVal Lookup(const TKey& key) const;

参数


键。

返回值

返回关联的值。 如果未找到匹配键,则返回 NULL。

CSimpleMap::Remove

删除键和匹配值。

BOOL Remove(const TKey& key);

参数


键。

返回值

如果已成功删除键和匹配值,则返回 TRUE;否则返回 FALSE。

CSimpleMap::RemoveAll

删除所有键和值。

void RemoveAll();

备注

从映射数组对象中删除所有键和值。

CSimpleMap::RemoveAt

删除指定索引处的键和关联的值。

BOOL RemoveAt(int nIndex);

参数

nIndex
要删除的键和关联的值的索引。

返回值

如果成功,则返回 TRUE;如果指定的索引是无效索引,则返回 FALSE。

CSimpleMap::ReverseLookup

返回与给定值关联的键。

TKey ReverseLookup(const TVal& val) const;

参数

val
值。

返回值

返回关联的键。 如果未找到匹配键,则返回 NULL。

CSimpleMap::SetAt

设置与给定键关联的值。

BOOL SetAt(const TKey& key, const TVal& val);

参数


键。

val
要分配的新值。

返回值

如果已找到键,并且值已成功更改,则返回 TRUE;否则返回 FALSE。

CSimpleMap::SetAtIndex

设置指定索引处的键和值。

BOOL SetAtIndex(
    int nIndex,
    const TKey& key,
    const TVal& val);

参数

nIndex
索引,引用要更改的键值配对。


新键。

val
新值。

返回值

如果成功,则返回 TRUE;如果索引无效,则返回 FALSE。

注解

更新 nIndex 指向的键和值。

另请参阅

类概述