CTypedPtrArray用法

MFC 同时被 2 个专栏收录
4 篇文章 0 订阅
17 篇文章 0 订阅

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 对象的指针。

  • 0
    点赞
  • 0
    评论
  • 2
    收藏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值