CTypedPtrMap
template< class BASE_CLASS , class KEY , class VALUE > class CTypedPtrMap : public BASE_CLASS
参 数
BASE_CLASS
此 类 型 指 针 映 射 类 的 基 类 ; 它 必 须 是 一 个 指 针 映 射 类 ( CMapPtrToPtr ,
CMapPtrToWord , CMapWordToPtr , 或 CMapStringToPtr) 。
KEY
被 用 来 作 为 该 映 射 的 关 键 字 的 对 象 的 类 。
V A L U E
保 存 在 该 映 射 中 的 对 象 的 类 。
说 明
CTypedPtrMap 类 为 指 针 - 映 射 类 CMapPtrToPtr , CMapPtrToWord , CMapWordToPtr 和 CMapStringToPtr 提 供 了 安 全 类 型 的 “ 包 装 ” 。 当 你 使 用CTypedPtrMap 时 , C++ 的 类 型 - 检 查 工 具 帮 助 消 除 由 于 不 匹 配 的 指 针 类 型 引 发的 错 误 。
由 于 所 有 的 CTypedPtrMap 函 数 都 是 内 联 的 , 所 以 使 用 这 个 模 板 不 会 明 显 地 影响 你 的 代 码 的 大 小 或 速 度 。
有 关 使 用 CTypedPtrMap 的 更 多 信 息 , 参 见 “ Visual C++ 程 序 员 指 南 ” 中 的 文 章“ 集 合 ” 和 “ 集 合 : 基 于 模 板 的 类 ” 。
#include <afxtempl.h>
请 参 阅 CMapPtrToPtr, CMapPtrToWord, CMapWordToPtr, CMapStringToPtr
CTypedPtrMap 类 成 员
Element Access
Lookup 返 回 一 个 基 于 某 个 VALUE 的 KEY
GetNextAssoc 获 取 下 一 个 用 于 反 复 的 元 素
RemoveKey 删 除 一 个 由 关 键 字 指 定 的 元 素
SetAt 如 果 找 到 了 匹 配 的 关 键 字 , 则 向 映 射 中 插 入 一 个元 素 来 代 替 一 个 已 有 的 元 素
Operators
operator 向 映 射 中 插 入 一 个 元 素
成 员 函 数
CTypedPtrMap::GetNextAssoc
void GetNextAssoc( POSITION& rPosition , KEY & rKey , VALUE & rValue ) const;
参 数
rPosition
指 定 一 个 对 先 前 调 用 GetNextAssoc 或 BASE_CLASS ::GetStartPosition 返 回的 POSITION 值 的 引 用 。
KEY
rKey
指 定 映 射 的 关 键 字 的 类 型 的 模 板 参 数 。
指 定 被 获 取 元 素 的 返 回 关 键 字 。
V A L U E
指 定 映 射 的 值 的 类 型 的 模 板 参 数 。
rValue
指 定 被 获 取 元 素 的 返 回 值 。
说 明
此 成 员 函 数 获 取 rNextPosition 处 的 映 射 元 素 , 然 后 更 新 rNextPosition 使 其 指 向映 射 中 的 下 一 个 元 素 。 在 对 映 射 中 的 所 有 元 素 进 行 反 复 时 此 函 数 是 最 有 用 的 。注 意 , 位 置 的 顺 序 不 必 与 关 键 值 的 顺 序 一 样 。
如 果 被 获 取 的 元 素 是 映 射 中 的 最 后 一 个 元 素 , 则 rNextPosition 的 新 值 被 设 置 为
NULL 。
这 个 内 联 函 数 调 用 BASE_CLASS ::GetNextAssoc。
请 参 阅 CMapStringToOb::GetNextAssoc, CMapStringToOb::GetStartPosition
CTypedPtrMap::Lookup
BOOL Lookup( BASE_CLASS ::BASE_ARG_KEY key , VALUE & rValue ) const;
返 回 值
如 果 找 到 了 该 元 素 则 返 回 非 零 值 ; 否 则 返 回 0 。
参 数
BASE_CLASS
指 定 此 映 射 类 的 基 类 的 模 板 参 数 。
key
指 定 将 被 查 找 的 元 素 的 关 键 字 。
V A L U E
指 定 保 存 在 此 映 射 中 的 值 的 类 型 的 模 板 参 数 。
rValue
指 定 被 获 取 元 素 的 返 回 值 。
Lookup 使 用 散 列 法 运 算 法 则 来 快 速 查 找 与 某 个 关 键 字 恰 好 匹 配 的 映 射 元 素 。这 个 内 联 函 数 调 用 BASE_CLASS ::Lookup 。
请 参 阅 CMapStringToOb::Lookup
CTypedPtrMap::RemoveKey
BOOL RemoveKey( KEY key );
返 回 值
如 果 找 到 了 指 定 的 项 并 成 功 删 除 , 则 返 回 非 零 值 ; 否 则 返 回 0 。
参 数
KEY
key
指 定 映 射 的 关 键 字 的 类 型 的 模 板 参 数 。要 被 删 除 的 元 素 关 键 字 。
此 成 员 函 数 调 用 了 BASE_CLASS ::RemoveKey 。 更 多 的 细 节 说 明 , 参 见
CMapStringToOb:: RemoveKey 。
CTypedPtrMap::SetAt
void SetAt( KEY key , VALUE newValue );
参 数
KEY
key
指 定 映 射 的 关 键 字 的 类 型 的 模 板 参 数 。
指 定 newValue 的 关 键 字 值 。
newValue
指 定 新 元 素 的 值 的 对 象 指 针 。
说 明
此 成 员 函 数 调 用 了 BASE_CLASS ::SetAt 。 更 多 的 细 节 说 明 , 参 见
CMapStringToOb::SetA t。
操 作 符
CTypedPtrMap::operator[ ]
VALU E & operator [ ]( BASE_CLASS ::BASE_ARG_KEY key );
参 数
V A L U E
指 定 保 存 在 此 映 射 中 的 值 的 类 型 的 模 板 参 数 。
BASE_CLASS
指 定 此 映 射 类 的 基 类 的 模 板 参 数 。
key
说 明
指 定 映 射 中 的 将 被 查 找 或 创 建 的 元 素 的 关 键 字 。
此 成 员 函 数 只 能 被 使 用 在 一 个 赋 值 语 句 的 左 边 ( 一 个 l- 值 ) 。 如 果 对 于 指 定 的关 键 字 没 有 映 射 元 素 , 则 创 建 一 个 新 的 元 素 。 这 个 操 作 符 没 有 “ 右 边 ” ( r- 值 ) 的 等 价 操 作 符 , 因 为 在 映 射 中 有 可 能 找 不 到 某 个 关 键 字 。 使 用 Lookup 成 员 函
数 可 以 进 行 元 素 恢 复 。
请 参 阅 CTypedPtrMap::Lookup