C++注意的小细节 (二) 不要在vector内部数据上操纵vector

比如,我有一段代码如下:

 

 

 

 

这段代码,表面生没有什么问题。

 

当vct.push_back(cvi);时,当vct内部空间不足的时候,将会重新申请一段空间,这个对象就被移走了!

 

但是,注意,这个对象本来应该移走,但我们现在所在这个对象的内部的这个对象并么有移走,反而会变成垃圾,也就是在vct申请空间时,旧空间被析构,但逻辑上我们的对象仍然是垃圾对象,所以便悲剧了。

 

所以,以后再使用vct时一定要小心,小心被析构。

 

解决办法有两种:

(1)给定vector一定的空间,让其有足够的空间。

(2)这种设计模式本身就是有问题的,我们可以调整结构,比如在别处写一个函数do_it(int pos,vector<...> vct);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值