练习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); //错误 没有默认构造函数。