一道迭代器失效练习题

随便写写

首先学习迭代器失效

传送门 : C+±—浅谈迭代器失效

学完迭代器失效之后做一道题呗

题目

在这里插入图片描述

分析

vector的迭代器为啥会失效
1、插入的时候扩容,转移空间出现野指针
2、删除的时候移动了元素,导致指针没指向正确的元素

list的迭代器为啥会失效
list底层不是一片连续的空间
1、list迭代器在插入的时候不会扩容,所以插入时不会失效
2、list迭代器在删除的时候会释放内存,出现野指针,迭代器会失效

deque的迭代器为啥会失效
deque的底层是一段段不连续的buffer小数组组成
1、deque插入的时候不会扩容,所以插入不会失效
2、deque的每一个buffer是连续的,要删除就会挪动元素,就会造成迭代器失效。

OK,
a、container = vector
删除的时候会移动元素,造成迭代器失效
b、container = list
删除的时候会出现野指针,但iter提前++了,并没有指向已经啥放的空间,并不是野指针,所以迭代器没有失效
c、container = deque
删除的时候移动了元素,造成迭代器失效


所以最后的答案是1和3,即vector和deque

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值