CMapStringToOb::GetNextAssoc

void GetNextAssoc( POSITION& rNextPosition, CString& rKey, CObject*& rValue ) const;

参数:
rNextPosition指定一个以前GetNextAssoc或GetStartPosition函数调用返回的POSITION值的参考。
rKey指定被获取元素(字符串)的返回关键码。
rValue指定要获取元素(CObject指针)的返回值,请参阅说明以获取该参数的更多信息。

说明:
获取rNextPosition位置的映射元素,然后将rNextPosition更新为映射中新的元素。该函数在遍历映射中所有元素时非常重要。值得注意的是位置次序与关键码值次序不必相同。
如果获取的元素为映射的最后一项,那么rNextPosition的新值将设置为零。
对于参数rValue,要确保将对象类型设置为CObject*&形式,这是编译器所需要的,如下面例子所示:
CMyObject* ob;
map.GetNextAssoc(pos, key, (CObject* &)ob);
这并不是根据模板建立的映射中GetNextAssoc的真实结果。

示例:
请参阅CObList::CObList,了解所有收集示例中使用的CAge类。
//example for CMapStringToOb::GetNextAssoc and CMapStringToOb::GetStartPosition
CMapStringToOb map;
POSITION pos;
CString key;
CAge* pa;

map.SetAt( "Bart", new CAge( 13 ) );
map.SetAt( "Lisa", new CAge( 11 ) );
map.SetAt( "Homer", new CAge( 36 ) );
map.SetAt( "Marge", new CAge( 35 ) );
// Iterate through the entire map, dumping both name and age.
for( pos = map.GetStartPosition(); pos != NULL; )
{
  map.GetNextAssoc( pos, key, (CObject*&)pa );
  #ifdef _DEBUG
     afxDump << key << " : " << pa << "\n";
  #endif
}

该程序的运行结果如下:
Lisa : a CAge at $4724 11
Marge : a CAge at $47A8 35
Homer : a CAge at $4766 36
Bart : a CAge at $45D4 13

请参阅:CMapStringToOb::GetStartPosition