放牧代码和思想
专注自然语言处理、机器学习算法
    愛しさ 優しさ すべて投げ出してもいい

CTypedPtrArray用法

MFC 数组集合类(无论是基于模板的还是不基于模板的)都使用索引访问它们的元素。MFC 列表和映射集合类(无论是基于模板的还是不基于模板的)都使用 POSITION 类型的指针描述集合内的给定位置。若要访问这些集合的一个或多个成员,请首先初始化位置指针,然后重复将该位置传递到集合并要求集合返回下一个元素。集合不负责维护迭代进度的状态信息。此信息保留在位置指针中。但是,如果给定特定位置,则集合负责返回下一个元素。

下面的过程显示了如何在由 MFC 提供的三种主要集合类型上遍历:
1)遍历数组

对 GetAt 成员函数使用顺序索引号:
CTypedPtrArray<CObArray, CPerson*> myArray;

for( int i = 0; i < myArray.GetSize();i++ )
{
CPerson* thePerson = myArray.GetAt( i );

}
此示例使用包含指向 CPerson 对象的指针的类型指针数组。数组从 CObArray 类(非模板预定义类之一)中派生。GetAt 返回指向 CPerson 对象的指针。对于类型指针集合类(即数组或列表),第一个参数指定基类;第二个参数指定要存储的类型。

CTypedPtrArray 类也重载 [ ] 运算符,以便可以使用自定义的数组下标语法访问数组元素。以上 for 循环主体中语句的另一种替换方法是:

CPerson* thePerson = myArray[ i ];
此运算符既在 const 版本中存在,也在非 const 版本中存在。const 版本(为 const 数组调用)只能显示在赋值语句的右侧。

2)遍历列表

使用成员函数 GetHeadPosition 和 GetNext 迭代列表:
CTypedPtrList<CObList, CPerson*> myList;

POSITION pos = myList.GetHeadPosition();
while( pos != NULL )
{
CPerson* thePerson = myList.GetNext( pos );

}
此示例使用类型指针列表包含指向 CPerson 对象的指针。该列表声明类似于过程迭代数组中的数组列表声明,但它是从 CObList 类派生的。GetNext 返回指向 CPerson 对象的指针。

知识共享许可协议 知识共享署名-非商业性使用-相同方式共享码农场 » CTypedPtrArray用法

评论 欢迎留言

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

我的作品

HanLP自然语言处理包《自然语言处理入门》