9.3.5节练习

练习9.29:假定vec包含25个元素,那么vec.resize(100)会做什么?如果接下来调用vec.resize(10)会做什么?

resize()  1.新规定大小小于原大小,将多的删除。2.大于  在后面添加新值。

c.resize(n)  //调整大小为n  默认初始化
c.resize(n, t)  //调整大小为n   任何新添加的元素都赋值为t

答:vec.resize(100) 会将容器的大小扩展为100,扩展的元素的值为默认初始化。

vec.resize(10) 会将容器的大小变为10,多余的元素将被删除。

练习9.30:接受单个参数的resize()版本对元素类型有什么限制。

答:单个参数说明是默认初始化   要求元素类型要有默认构造函数。

//假定noDefault是一个没有默认构造函数的类型
vector<noDefault> v1(10, init);  //正确:提供了元素初始化器。
vector<noDefault> v2(10);  //错误 没有默认构造函数。

猜你喜欢

转载自blog.csdn.net/xnnswmzdszyd/article/details/89676644