STL源码剖析中vector的Insert实现部分要点纪要

本文深入探讨了STL中vector容器的_M_fill_insert方法实现细节。解释了为何需要定义临时变量来避免值改变,并详细分析了不同情况下元素拷贝与构造函数调用的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

跟原书代码稍有差别,直接从SGI STL上Copy上来的也没有加注释

 

  

 

   问题1 这个开始非常想不明白,后来请教了一们大虾说是考虑到覆盖我才恍然大悟,因为参数是引用类型的,很有可能会在数据移动过程中参数的值也就是__x是发现变化而使用了一个临时变量来保存这个值.

 问题2 这个我一开始没想明白,后来又想了下是因为为了保正所有在vector中的对象都要调用一次自己的构造函数,因为赋值构造函数一个类并不能将他所有数据赋值给另一个类,主要是一些编绎器自己添加的值,比如虚表,所以为了保存每个对象的构造函数都被调用,为了区分这两两种情况,所以要加入判断来决定哪些要调用构造函数哪些不用再调用

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值