算法从不改变容器的大小---理解

本文解析了fill_n和back_inserter在C++标准库中的工作原理与使用误区,指出fill_n不会直接改变容器大小,而是配合back_inserter完成元素填充。同时,澄清了vector.reverse的功能并非增加容器大小。

在 fill_n(back_inserter(vec),10,0);  
  中,问题在于,fill_n算法从来都不会改变容器的size,改变容器size的是back_inserter,back_inserter并不是一种“算法”,它可以看成是种“迭代适配器”。  
  于是,上面这条语句中的fill_n是一直是在“被back_inserter修改着的”容器中插入无素,它本身从来不曾修改vec容器的大小,而且也不知道容器是否被谁改过。  
  换句话说,它只会低着头不断往里插,却不曾知道back_inserter一直在背地里协助它,并为之承担了“修改容器大小”的骂名,呵呵。

 

 

vector.reverse(Num) : 改变容器的容量,而不是增加Size!!!

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值