词条 | 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条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。