摘自《Extended STL》
标准库要求,所有值类型为聚合类型的迭代器必须支持指针成员选取运算符(operator ->()),下面是使用该运算符的示例代码:
struct X
{
int x;
};
some_iterator
some_iterator
some_iterator
if( end != si &&
end != si2)
{
si->x = si2->x;
}
标准(C++-03: 24.1.1;1)要求,对一个迭代器应用指针成员选取运算符,在语义上等同于先对其应用解引用运算符,再应用点号成员选取运算符,即it->m与(*it).m等效。
可惜,使用该运算符会遇上麻烦。
假设我们有一个容器类型C,它的实例保存智能指针类型P的实例,P用于管理对象生存期。P上定义了一个release()方法用于提早释放对象。进一步假设,被P管理的类型T上也定义了一个release()方法。在下面代码片断中,我们希望通过该容器的迭代器类型I的一个实例,调用T::release()方法:
C cont = . . .
I it = cont.begin();
it->release();
不幸的是,这段代码调用的不是T::release()方法,它调用的是P::release()方法,从而销毁了T的实例。当我们再次使用cont这个容器的时候,就可能遇到各种奇怪的问题,以下代码才是真正实现我们想法的代码:
C cont = . . .
2026火影忍者云游戏官网最新秒玩入口-一键畅玩火影云游戏
poki小游戏官网入口-poki海量游戏分类大全畅玩入口
网易126邮箱极速注册-126邮箱免费申请秒过稳定登录
z-lib中文网最新地址-z-lib镜像站登录入口更新
学信网学历查询入口-官方权威学历认证通道
erolabs实验室官网登录入口在哪?erolabs实验室官网登录链接速览
疯狂医院达什医生中文版(Crazy Hospital)
疯狂医院达什医生最新版是一款医院模拟经营类游戏,逼真的场景画
宝宝庄园官方版
宝宝庄园官方版是一款超级经典好玩的模拟经营类型的手游,这个游
桃源记官方正版
桃源记是一款休闲娱乐类的水墨手绘风格打造的模拟经营手游。玩家
长途巴士模拟器手机版
长途巴士模拟器汉化版是一款十分比真好玩的大巴车模拟驾驶运营类
房东模拟器最新版2024
房东模拟器中文版是一个超级有趣的模拟经营类型的手游,这个游戏