STL学习之copy与iterator适配器

在C++中有些函数的容器范围是不定的,例如copy函数,指定数据源

范围后,目的容器只需要指定起始地址就可以将数据源的数据复制到目

的容器。然而,如果目的容器的容量不够,则会出现运行错误,例如:

 

解决的办法有两种:一是预先给目的容器分配比要复制的元素大的空间;二是

使用iterator适配器,如下代码所示:

iterator适配器有三种:back_inserter, front_inserter, inserter。

其中back_inserter使用push_back函数在容器末尾插入元素,front_inserter

使用push_front函数在容器的前面插入元素(需要容器成员函数有push_front,STL中

只有deque和list支持)。inserter则是普通的适配器,需要指定目的容器和要复制到目的

容器的起始位置。

 

上面代码的运行结果为:

 此外在C++的STL中还有输入输出流适配器,可以通过该iterator适配器来复制文件或

标准输入中的数据到容器中,或将容器中的数据复制到文件或标准输出中,例如:

该程序中将读入标准输入流中的字符串并复制到col7的字符串向量中(注意结束符为

回车后按Ctrl+Z键后回车)。并将字符串向量的字符串输出到标准输出上。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岛上码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值