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
问题1(收缩):是否保证0th, 1st and 2nd使用以下代码调整此向量的大小后,元素受到保护(即,它们的值不会更改):vect.resize(3)
?
问题2(扩展):通过代码扩展这个向量后vect.resize(7)
;
a.前 5 个元素是 (0th通过4th)保持不变?
b.新添加的两个元素会发生什么情况(5th and 6th)?它们的默认值是多少?
问题1:是的,标准说:
void resize(size_type sz);
If sz < size()
, 相当于erase(begin() + sz, end());
.
问题 2:如果不需要调整大小,可以。否则,您的元素将被复制到内存中的其他位置。它们的值将保持不变,但这些值将存储在其他地方。所有对这些对象的迭代器、指针和引用都将失效。默认值为AClass()
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)