首页 科普 资讯 养生 问答 找医院 相关问答
首页> 问答

VC中ctypedptrlist类的用法

发布网友 发布时间:13小时前

我来回答

1个回答

热心网友 时间:13小时前

CTypedPtrList

template < class BASE_CLASS, class TYPE >
class CTypedPtrList : public BASE_CLASS

参数: BASE_CLASS 类型指针列表类的基类;必须是一个指针列表类(CObList或CPtrList)。
TYPE 保存在基类列表中的元素的类型。

说明:
CTypedPtrList类为类CPtrList的对象提供了一个类型-安全的“包装”。当你使用CTypedPtrList而不是CObList或CPtrList的时候,C++类型-检查工具帮助消除由不匹配的指针类型引发的错误。
另外,CTypedPtrList包装实现了许多在使用CObList或CPtrList时要实现的强制转换。
因为所有的CTypedPtrList函数都是内联的,所以使用这个模板不会明显地影响你的代码的大小和速度。
从CObList派生的列表可以是连续的,但是从CPtrList派生的列表却不能。
当一个CTypedPtrList对象被删除时,或者是当它的元素被删除时,只有指针被删除了,而它们所引用的项并没有被删除。
有关使用CTypedPtrList的更多信息,参见“Visual C++程序员指南”中的文章“集合”和“基于模板的类”。
#include <afxtempl.h>

CTypedPtrList类成员

首/尾元素访问
GetHead 返回列表的头元素(不能是空的)
GetTail 返回列表的尾元素(不能是空的)

操作
RemoveHead 从列表的头部删除元素
RemoveTail 从列表的尾部删除元素
AddHead 将一个元素(或另一个数组中的所有元素)添加到列表的头部(产生一个新的头部)
AddTail 将一个元素(或另一个数组中的所有元素)添加到列表的尾部(产生一个新的尾部)

重复
GetNext 获取用于反复的下一个元素
GetPrev 获取用于反复的前一个元素

获取/修改
GetAt 获取在一个给定位置处的元素
SetAt 设置在一个给定位置处的元素

成员详细解释
CTypedPtrList::GetHead

TYPE& GetHead( );
TYPE GetHead( ) const;

返回值:
如果是通过一个指向const CTypedPtrList的指针访问此列表,则GetHead返回一个类型由模板参数TYPE指定的指针。这使此函数只能被使用在赋值语句的右边,这样就保护了列表不被修改。
如果列表被直接访问,或通过一个指向CTypedPtrList的指针访问,则GetHead返回对一个类型由模板参数TYPE指定的指针的引用。这使得此函数可以使用在赋值语句的任何一边,从而允许该列表可以被修改。

参数: TYPE 指定保存在列表中的元素类型的模板参数。

说明:
此成员函数用来获取代表此列表中的头元素的指针。
在调用GetHead之前,你必须保证该列表不是空的。如果该列表是空的,则Microsoft基础类库的调试版将给出断言。可以使用IsEmpty来检验该列表是否包含元素。

CTypedPtrList::GetTail

TYPE& GetTail( );
TYPE GetTail( ) const;

返回值:
如果是通过一个指向const CTypedPtrList的指针访问此列表,则GetTail返回一个类型由模板参数TYPE指定的指针。这使此函数只能被使用在赋值语句的右边,这样就保护了列表不被修改。
如果列表被直接访问,或通过一个指向CTypedPtrList的指针访问,则GetTail返回对一个类型由模板参数TYPE指定的指针的引用。这使得此函数可以使用在赋值语句的任何一边,从而允许该列表可以被修改。

参数: TYPE 指定保存在列表中的元素类型的模板参数。

说明:
此成员函数用来获取此列表中的头元素。
在调用GetTail之前,你必须保证该列表不是空的。如果列表是空的,则Microsoft基础类库的调试版将给出断言。使用IsEmpty来检验列表是否包含元素。

CTypedPtrList::RemoveHead

TYPE RemoveHead( );

返回值:
返回先前在列表头部的指针。这个指针的类型由模板参数TYPE指定。

参数: TYPE 指定保存在列表中的元素类型的模板参数。

说明:
此成员函数从列表的头部删除元素并返回这个元素。
在调用RemoveHead之前,你必须保证该列表不是空的。如果列表是空的,则Microsoft基础类库的调试版将给出断言。使用IsEmpty来检验列表是否包含元素。

CTypedPtrList::RemoveTail

TYPE RemoveTail( );

返回值:
返回先前在列表尾部的指针。这个指针的类型由模板参数TYPE指定。

参数: TYPE 指定保存在列表中的元素类型的模板参数。

说明:
此成员函数从列表的尾部删除元素并返回这个元素。
在调用RemoveHead之前,你必须保证该列表不是空的。如果列表是空的,则Microsoft基础类库的调试版将给出断言。使用IsEmpty来检验列表是否包含元素。

CTypedPtrList::AddHead

POSITION AddHead( TYPE newElement );
void AddHead( CTypedPtrList <BASE_CLASS, TYPE> *pNewList );

返回值:
第一种版本返回新插入的元素的POSITION值。

参数: TYPE 保存在基类列表中的元素的类型。
newElement 要添加到此列表中的对象指针。可以是NULL值。
BASE_CLASS 此类型指针列表类的基类;必须是一个指针列表类(CObList或CPtrList)。
pNewList 一个指向另一个CTypedPtrList对象的指针。在pNewList中的元素将被添加到列表中。

说明:
此成员函数调用BASE_CLASS::AddHead。
第一种版本将一个新元素添加到列表的头元素之前。
第二种版本将另一个列表中的元素添加到此列表的头元素之前。

CTypedPtrList::AddTail

POSITION AddTail( TYPE newElement );
void AddTail( CTypedPtrList <BASE_CLASS, TYPE> *pNewList );

返回值:第一个版本返回新插入的元素的POSITION值。

参数 TYPE 保存在基类列表中的元素的类型。
newElement 要添加到此列表中的对象指针。可以是NULL值。
BASE_CLASS 此类型指针列表类的基类;必须是一个指针列表类(CObList或CPtrList)。
pNewList 一个指向另一个CTypedPtrList对象的指针。在pNewList中的元素将被添加到列表中。

说明:
此成员函数调用BASE_CLASS::AddTail。
第一种版本将一个新元素添加到列表的尾元素之后。
第二种版本将另一个列表中的元素添加到此列表的尾元素之后。

CTypedPtrList::GetNext

TYPE& GetNext( POSITION& rPosition );
TYPE GetNext( POSITION& rPosition ) const;

返回值:
如果是通过一个指向const CTypedPtrList的指针访问此列表,则GetNext返回一个类型由模板参数TYPE指定的指针。这使此函数只能被使用在赋值语句的右边,这样就保护了列表不被修改。
如果列表被直接访问,或通过一个指向CTypedPtrList的指针访问,则GetNext返回对一个类型由模板参数TYPE指定的指针的引用。这使得此函数可以使用在赋值语句的任何一边,从而允许该列表可以被修改。

参数: TYPE 指定保存在列表中的元素类型的模板参数。
rPosition 一个对先前调用GetNext,GetHeadPosition或其他成员函数返回的POSITION值的引用。

说明:
此成员函数用来获取由rPosition标识的列表元素,然后将rPosition设置为列表中的下一个项的POSITION值。如果你是通过调用GetHeadPosition或CPtrList::Find来建立初始位置的,你就可以使用GetNext来实现一个向前的反复循环。
你必须保证你的POSITION值代表的是列表中的一个有效位置。如果位置是无效的,则Microsoft基础类库的调试版将给出断言。
如果获取的元素是列表中的最后一个,则rPosition被设置为新值NULL。
在一个反复中删除一个元素是有可能的。参见CObList::RemovAt的示例。

CTypedPtrList::GetPrev

TYPE& GetPrev(POSITION& rPosition );
TYPE GetPrev( POSITION& rPosition ) const;

返回值:
如果是通过一个指向const CTypedPtrList的指针访问此列表,则GetPrev返回一个类型由模板参数TYPE指定的指针。这使此函数只能被使用在赋值语句的右边,这样就保护了列表不被修改。
如果列表被直接访问,或通过一个指向CTypedPtrList的指针访问,则GetPrev返回对一个类型由模板参数TYPE指定的指针的引用。这使得此函数可以使用在赋值语句的任何一边,从而允许该列表可以被修改。

参数: TYPE 指定保存在列表中的元素类型的模板参数。
rPosition 一个对先前调用GetPrev或其它成员函数返回的POSITION值的引用。

说明:
此成员函数用来获取由rPosition标识的列表元素,然后将rPosition设置为列表中的下一个项的POSITION值。如果你是通过调用GetTailPosition或Find来建立初始位置的,你就可以使用GetPrev来实现一个反向的反复循环。
你必须保证你的POSITION值代表的是列表中的一个有效位置。如果位置是无效的,则Microsoft基础类库的调试版将给出断言。
如果获取的元素是列表中的第一个,则rPosition被设置为新值NULL。

CTypedPtrList::GetAt

TYPE& GetAt( POSITION position );
TYPE GetAt( POSITION position ) const;

返回值:
如果是通过一个指向const CTypedPtrList的指针访问此列表,则GetAt返回一个类型由模板参数TYPE指定的指针。这使此函数只能被使用在赋值语句的右边,这样就保护了列表不被修改。
如果列表被直接访问,或通过一个指向CTypedPtrList的指针访问,则GetAt返回对一个类型由模板参数TYPE指定的指针的引用。这使得此函数可以使用在赋值语句的任何一边,从而允许该列表可以被修改。

参数: TYPE 指定保存在列表中的元素类型的模板参数。
position 一个由先前调用GetHeadPosition或Find成员函数返回的POSITION值。

说明:
一个类型为POSITION的变量是此列表的一个关键字。它与索引是不一样的,你不能自己处理一个POSITION值。GetAt获取与一个给定位置关联的CObject指针。
你必须确保你的POSITION值表示的是列表中的一个有效位置。如果它是无效的,则Microsoft基础类库的调试版将给出断言。
这个内联函数调用了BASE_CLASS::GetAt。

CTypedPtrList::SetAt

void SetAt( POSITION pos, TYPE newElement );

参数: pos 要被设置的元素的POSITION。
TYPE 保存在基类列表中的元素类型。
newElement 要被写入列表中去的对象指针。

说明:
此成员函数调用BASE_CLASS::SetAt。
一个类型为POSITION的变量是此列表的一个关键字。它与索引是不一样的,你不能自己处理一个POSITION值。SetAt写对象指针到列表中指定位置。
你必须确保你的POSITION值表示的是列表中的一个有效位置。如果它是无效的,则Microsoft基础类库的调试版将给出断言。
更多的细节说明,参见CObList::SetAt。
剪映视频倒放怎么设置 剪映设置视频倒放的方法 在私企上班退休时把档案给转到社会这样退休工资是不是就少了私?_百度... 我是私企退休人员,档案存放在人才,退休后档案会退回街道办事处吗?_百 ... ...退休后会有养老金吗,报到证过期了吗?档案怎么处理 融合爵士的介绍 Fusion融合爵士乐Fusion 千与千寻哪个平台能看 毛衣缩水后应该怎么处理? 佳能7018C基本参数 善良温顺是指什么生肖 温顺第一是什么生肖 手机垃圾清理使用哪个软件最好? 适合新手用的手机清理软件 苹果手机怎么把号码黑名单里? VUE视频相机使用教程 教你简单几步拍出大片 如何使用佳能相机录像 相机录像具体操作教程分享 羊头捣蒜做法图解 服刑期间领取养老金是否构成犯罪 狗狗胰腺炎最怕的三种蔬菜是什么 怎么喂食 银行卡给专业的贷款公司做流水有风险吗? 电话号可直接贷款吗,他知道我的实名电话,还用paos机刷了我的银行卡一... 为什么新买的苹果手机里面还有照片? 蓝歌鸲叫的好吗 蓝歌鸲叫的怎么样 虎皮鹦鹉二只在不同的地方买的要多习惯才会一样? 我丢这首歌拿不下你吗是什么梗-我丢这首歌拿不下你吗梗的意思介绍_百度... 你怎么看待苗阜被张玉浩暴打这件事呢? 诈骗罪需要满足哪些要件才能成立 诈骗罪成立的关键因素是什么 诈骗罪的构成有三个关键要件是什么_百度知 ... 诈骗罪的成立条件是什么 Mac 安装系统无法找到硬盘 请问,没用公积金贷款能用公积金还款吗 没用公积金贷款买房能用来还款吗 福州软件职业技术学院能不能转专业 手把手教你软著申请书怎么写 华夏银行信用卡的免息期是多少天? 孩子在家是混世魔王,为什么上学后却成了一只羊? 一个朋友跟我留言,上面写道;shadow within ,stay calm and carry on... 吞食天地2 流程问题 吞食天地2打败了张鲁白虎斧在城的什么地方 桃李(最小说)作者是? 梦延年作者简介 溧水区辅警工资是多少 山西晋城辅警工资多少钱一月 难以为情 难乎为情 ...原单位已经把保险中断,一年后找到新工作给上保险,请问怎么转接手续... 派遣证丢了毕业5年,单位给上保险却不保管档案,档案在自己手里放着,请问... 我是外地的嫁入天津,现公司给上保险,单位应该怎么给我办手续 单位合并或者分立,劳动合同能否继续履行 你安全吗女主播第几集 VC如何在list中添加列,谢谢 子女反对父母买存款保险怎么办 手机触摸屏(屏幕)失灵 在屏幕右边边缘处出现小白点手机屏幕的小白_百 ... 三星触摸屏手机因为摁的力量过大屏幕上出现小白点怎么办 拉黑一个人的经典说说大全 ...x-3x2ym+1+x3y-3x4-1是五次四项式,单项式3x3ny4... 初中一年级题! ...1次幂+x³y-3x的四次幂是五次四项式,单项式3x的(3-x)次幂与多... ...m+1 +x 3 y-3x 4 -1是五次四项式,单项式3x 3n y 4 -m z与多项式的... ...3x^2y^m+i+x^3y-3x^4-1是五次四项式,单项式3x^3n y^3- ...单项式3X的3n次方y的3-m次方z与多项式的次数 跑跑卡丁车手游预约礼包怎么领取_永久绝版套装官网领取攻略 优酷会员可以在几台电视同时登陆使用? 惠州今天封城了吗 从低风险区返回惠州需要隔离吗_深圳回惠州要不要隔离 银河麒麟版本信息 ...超级计算机装的什么系统,是windows,unix , linux 还是其他的?普_百 ... 取保候审是在外地办吗 ...少女,小女神花玲,守护甜心,爱丽丝学园,水果篮子,这样的人物美型的... ...要像水果篮子和守护甜心一样的 最好有 魔法+变身+恋爱的 瓷砖背胶十大名牌厂家排行榜 唐姆瓷砖背胶多少钱 2023全民国家安全教育日是几月几号 国家安全教育日是每年的哪一天 穿越火线怎么才能加入战队呢?加入战队有什么好处? 怀孕查染色体检查什么 孕前检查多钱 孕前检查需要注意什么 做家电和厨房电器生意应注意哪些风水学 做电器生意要注意什么 公有制与非公有制的区别,什么是公有制,什 公有制和非公有制之间的关系 我买了一辆二手山地车,车头有1个自由女神像,请问有没有人知道是什么牌子... ...一辆捷安特亮红色的山地车,虽然同学们都没有看过,但都说红色是女士... ...有什么人注意的情况下,我就把一辆停在暗处的山地车车 英语求救!not only,but also中not only这个分句什么时候倒装,什么时候... not only… but also什么时候要用倒装语序呢? 英语求救!not only,but also中not only这个分句应倒装对吗 中国核工业建设集团公司核心业务 合租时代的爱情作者简介 《合租时代的爱情》网络名:《这场爱情如狼似虎》 作者:灭灯退魈? 适合男孩出生的日子男孩子在哪天出生比较好运?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com