C++ primer 第五版 中文版 9.2.4 节练习



C++ primer 第五版 中文版 9.2.4 节练习


练习 9.11:对6种创建和初始化vector对象的方法,每一种都给出一个实例。解释每个vector包含什么值。

答:

int i = 321;
vector<int> vect; //默认初始化
vector<int> vect1(i);  // 321个0 跟 vect5等价
vector<int> vect2 = vect1; //321个0 
vector<int> vect3{ 1, 1, 2, 3, 5, 8 }; //列表初始化 1,1,2,3,5,8
vector<int> vect4 = { 1, 1, 2, 3, 5, 8, 13 }; //列表初始化1,1,2,3,5,8,13
vector<int> vect5(10); // 包含10个元素默认初始化
vector<int> vect6(10, 321); //包含10值为321的元素。


练习 9.12:对于接受一个容器创建其拷贝的构造函数,和接受两个迭代器创建拷贝的构造函数,解释它们的不同。

答:

接受容器的两个窗口的类型及其元素类型必须匹配。

接受迭代器创建的就不要求容器类型必须相同了,只要原来容器的元素类型可以转换新的容器的类型即可。

练习 9.13:如何从一个list<int> 初始化一个vector<double> ? 从一个 vector<int> 又该如何创建?编写代码验证你的答案。

答:

 list<int> mylist = { 1, 1, 2, 3, 5, 8, 13 };
 vector<int> myivector = { 1, 1, 2, 3, 5, 8 };
 vector<double> mydvector(mylist.begin(),mylist.end());  //由于类型不同,所以不能直接拷贝,需要用迭代器范围来拷贝
 vector<double> mydvector2(myivector.begin(),myivector.end());//由于类型不同,所以不能直接拷贝,需要用迭代器范围来拷贝

#include <iostream>
#include <list>
#include <vector>

using std::vector;
using std::list;
using std::cout;
using std::endl;

int main()
{
	list<int> mylist = { 1, 1, 2, 3, 5, 8, 13 }; 
	vector<int> myivector = { 1, 1, 2, 3, 5, 8 };
	vector<double> mydvector(mylist.begin(),mylist.end());  //由于类型不同,所以不能直接拷贝,需要用迭代器范围来拷贝
	vector<double> mydvector2(myivector.begin(),myivector.end());//由于类型不同,所以不能直接拷贝,需要用迭代器范围来拷贝

	for (const auto a : mydvector)
		cout << a << " ";
	cout << endl;

	for (const auto a : mydvector2)
		cout << a << " ";
	cout << endl;

	return 0;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值