调整"std :: vector"的大小; 哪些元素受到影响?

hkB*_*sai 6 c++ resize vector

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:是的,标准说:

void resize(size_type sz);
Run Code Online (Sandbox Code Playgroud)

如果sz < size(),相当于erase(begin() + sz, end());.

问题2:如果不需要调整大小,是的.否则,您的元素将被复制到内存中的其他位置.它们的值将保持不变,但这些值将存储在其他位置.所有迭代器,指针和对这些对象的引用都将失效.默认值为AClass().