C++ Primer笔记 容器和算法---写容器元素的算法

P341

 

1 写入输入序列的元素

fill(iterator_beg, iterator_end, value)

想迭代器范围每个元素写入value,这是一种安全的写入操作。


2 不检查写入操作的算法

fill_n(iterator_beg, count, value)

往迭代器开始位置写入count个value值,如果写入的容器大小小于count,那么会发生运行时错误!                                                 VC6.0下验证:编译没错,但是运行出错!

eg.

C++ Primer笔记   容器和算法---写容器元素的算法 - 大灰狼 - 大灰狼 的博客

上程序中,ivec的大小要大于等于fill_n中的第二个参数count,如果大于count,fill_n的结果会改写ivec前count个值,ivec后

面的值保持不变, 有图有真相!



3 引入back_inserter

这个函数是迭代器适配器,它的参数为一个容器的引用,back_inserter(某容器); 生成一个绑定在该容器上的插入迭代器。

在通过这个迭代器给元素赋值时,赋值运算将调用push_back在容器中添加一个具有指定值的元素,因此这是一种安全的

操作。

eg.

vector<int> ivec;                                      //ivec为空

fill_n(bac_inserter(ivec), 10, 0);                 //在ivec中插入10个元素0



4 写入到目标迭代器的算法

第三类算法向目标迭代器写入未知个数的元素。 

C++ Primer笔记   容器和算法---写容器元素的算法 - 大灰狼 - 大灰狼 的博客


5 算法的_copy版本

replace_copy(iterator_from_beg, iterator_from_end, iterator_to,  finded_value, replace_value);

函数把迭代器iterator_from_beg, iterator_from_end之间的元素中值的副本为finded_value改为repalce_value,然后赋给iterator_to

所指向的容器,但是,iterator_from_beg, iterator_from_end所指向的容器本身并不发生变化!!!

eg.

C++ Primer笔记   容器和算法---写容器元素的算法 - 大灰狼 - 大灰狼 的博客


上面的运行结果说明:replace_copy从iterator_to的最后一个位置开始添加,而且添加的是更改后的值,而源容器元素本身不变!


 

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值