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和2nd元素受到保护(即;它们的值不会改变)在使用以下代码调整此 vector 的大小后:vect.resize(3)
?
问题2(扩展):通过代码vect.resize(7)
扩展这个 vector 后;
a. 前 5 个元素(0th 到 4th)是否保持不变?
b. 新添加的两个元素(5th 和 6th)会发生什么?它们的默认值是什么?
最佳答案
问题 1:是的,标准说:
void resize(size_type sz);
If
sz < size()
, equivalent toerase(begin() + sz, end());
.
问题 2:如果不需要调整大小,可以。否则,您的元素将被复制到内存中的不同位置。它们的值将保持不变,但这些值将存储在其他地方。所有对这些对象的迭代器、指针和引用都将失效。默认值为 AClass()
。
关于c++ - 调整 "std::vector"的大小;哪些元素受到影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4820998/