std::vector<AClass> vect;
AClass Object0, Object1, Object2, Object3, Object4;
vect.push_back(Object0); // 0th
vect.push_back(Object1); // 1st
vect.push_back(Object2); // 2nd
vect.push_back(Object3); // 3rd
vect.push_back(Object4); // 4th
Run Code Online (Sandbox Code Playgroud)
问题1(缩小):难道guarantied的第0,第1和第2个元素(即,它们的值不改变)来保护这些代码调整这个载体后:vect.resize(3)?
问题2(扩展):通过代码扩展此向量vect.resize(7);
一个.前5个元素(第0到第4个)是否保持不变?
湾 新添加的两个元素(第5和第6)会发生什么?它们的默认值是多少?
fre*_*low 12
问题1:是的,标准说:
Run Code Online (Sandbox Code Playgroud)void resize(size_type sz);如果
sz < size(),相当于erase(begin() + sz, end());.
问题2:如果不需要调整大小,是的.否则,您的元素将被复制到内存中的其他位置.它们的值将保持不变,但这些值将存储在其他位置.所有迭代器,指针和对这些对象的引用都将失效.默认值为AClass().