10.2.2节练习

练习10.6 编写程序,使用fill_n将一个序列中的int值都设置为0。

#include <iostream>
#include <vector>
using namespace std;
int main()
{
	vector<int> val{ 8,1,2,3,4,5 };
	fill_n(val.begin(), val.size(), 0);
	for (auto i : val) {
		cout << i << " ";
	}
	cout << endl;
	return 0;
}

练习10.7 下面程序是否有错误?如果有,请改正。

(a) vector<int> vec; list<int> lst; int i;

          while (cin >> i)

                lst.push_back(i);

         copy(lst.cbegin(), lst.cend(), vec.begin());

传递给copy的目的序列至少要包含与输入序列一样多的元素,而本题的输入序列至少和目的序列一样多。

c.push_back() 中换成vec.push_back()。

(b) vector<int> vec;

          vec.reserve(10);

          fill_n(vec.begin(), 10 ,0);

vector中至少有不少于10个元素,若是要将容器的元素全置为0,那么用fill_n(vec.begin(), vec.size(), 0)才能保证。


练习10.8 本节提到过,标准库算法不会改变它们所操作的容器的大小。为什么使用back_inserter不会使这一断言失效?

用算法向容器中写入数据使用back_insert,但它是定义在头文件iterator中的一个函数!它是函数啊!真正起到添加元素作用的是容器操作或迭代器操作。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值