请输入您要查询的百科知识:

 

词条 CMapStringToOb
释义

CMapStringToOb是将唯一的CString对象映射为CObject指针的一个字典类。一旦在映射中插入一个CString-CObject* 对或元素,那么可以有效地获取或删除使用字符串或CString值作为关键码的对。同时,也可以在映射中遍历所有元素。

POSITION类型变量用于替换所有映射变量的入口。可以使用POSITION来“记忆”入口后遍历映射。可能认为这种遍历是通过关键码值来依次进行的,但实际不是。

获取元素的次序没有确定。CMapStringToOb引入了宏IMPLEMENT_SERIAL,来支持其元素的串行化和转储。如果映射存储到档案文件中,那么每一元素都可利用加载插入(<<)操作符或Serialize成员函数来依次进行串行化。

如果要了解有关在映射中进行个别元素的诊断转储(CString值或CObject内容),那么转储内容的深度必须为1或更大。

当CMapStringToOb对象或其元素被删除,那么CString值或CObject指针将被删除,而CObject指针参考的对象则不会被销毁。

映射类的派生与列表的派生相似。下列是同CMapStringToOb类成员函数较相似类:

·CMapPtrToPtr ·CMapPtrToWord ·CMapStringToPtr ·CMapStringToString ·CMapWordToOb ·CMapWordToPtr  #include <afxcoll.h>

CMapStringToOb类的成员

构造函数

CMapStringToOb构造一个将CObject值映射为CObject指针的收集 操作

Lookup返回一个建立在CString值基础上的CObject指针SetAt在映射中插入一个元素,但假如发现了相匹配的关键码,则替换已经存在的元素operator []在映射中插入一个元素,它是代替SetAt的操作RemoveKey删除关键码指定的元素RemoveAll删除映射中所有的元素GetStartPosition返回第一个元素的位置GetNextAssoc获取循环中下一个元素 状态

GetCount返回映射中元素的个数IsEmpty测试是否为空映射(即没有元素)

Lookup() 查询映射到指定关键字的值,即根据一个CString值返回一个CObject指针。

SetAt() 向映射中插入一个元素,如果指定的关键字存在,替换原来的元素

operator [ ] 向映射中插入一个元素,其作用和SetAt()相同

RemoveKey() 查询符合关键字的映射。如果发现,则删除这个元素

RemoveAll() 风险映射中所有的元素

GetStarPosition() 获得映射中第一个元素的位置。映射中第一个元素是不预知的,所以映射的第一个元素实际上没有特定的意义。一般将这个值传递给GetNextAssoc()函数

GetNextAssoc() 获得映射中指定位置处下一个元素,参数尤为需要注意的是第3个参数是个指针,如下:

rNextPosition 指定一个以前GetNextAssoc或GetStartPosition函数调用返回的POSITION值的参考。

rKey 指定被获取元素(字符串)的返回关键码。

rValue 指定要获取元素(CObject指针)的返回值,请参阅说明以获取该参数的更多信息。

GetCount() 返回映射中的元素数目。

IsEmpty() 测试映射是否为空。

例子:

{

CMapStringToOb StrObMap;

//添加元素

int *p = new int;

*p = 3;

StrObMap.SetAt("Three", (CObject*&)p);

p = new int;

*p = 5;

StrObMap.SetAt("Five", (CObject*&)p);

//删除元素

p = NULL;

POSITION pos = StrObMap.GetStartPosition();

while(pos)

{

CString str;

StrObMap.GetNextAssoc(pos,str,(void *&)p);

if ( NULL != p)

{

delete p;

p=NULL;

}

}

StrObMap.RemoveAll();

}

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/12/23 0:02:30