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==()。
同时提供 CSimpleMap
和 CSimpleArray 以便与以前的 ATL 版本兼容。CAtlArray 和 CAtlMap 提供更完整且更高效的集合实现。
与 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 指向的键和值。