c++里,delete了list容器迭代器有什么结果?

例如,E是一个类有以下代码:list<E*>EList;list<E*>::iteratorp,q;p=EList.begin();q=EList.end();while... 例如,E是一个类
有以下代码:
list<E*> EList;
list<E*>::iterator p, q;
p=EList.begin();
q=EList.end();
while(p!=q)
{
delete *p;
p++;
}

在这里,delete了*p,*p还存在吗,为什么delete了p之后还可以p++?
delete了list容器的迭代器后会有什么结果?
谢谢!
展开
 我来答
zjfaok
2013-08-09 · TA获得超过6806个赞
知道大有可为答主
回答量:4146
采纳率:62%
帮助的人:1603万
展开全部
delete的是迭代器指向的对象,析构的是迭代器指向的对象(这是个指针)指向的对象,对迭代器没有影响,对这个指针而言只是其指向的对象被析构且该处内存被收回,指针仍然存在……
追问
对象不存在,迭代器不是会变成“野指针”吗
难道该处内存被收回,指针依然指着该处内存?
否则++怎么能让p指向下一个对象?
追答
delete的是*p,关p什么事
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式