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

标签 c++ vector resize

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(收缩):是否保证0th1st2nd元素受到保护(即;它们的值不会改变)在使用以下代码调整此 vector 的大小后:vect.resize(3)?

问题2(扩展):通过代码vect.resize(7)扩展这个 vector 后;
a. 前 5 个元素(0th4th)是否保持不变?
b. 新添加的两个元素(5th6th)会发生什么?它们的默认值是什么?

最佳答案

问题 1:是的,标准说:

void resize(size_type sz);

If sz < size(), equivalent to erase(begin() + sz, end());.

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

关于c++ - 调整 "std::vector"的大小;哪些元素受到影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4820998/

相关文章:

c++ - GCC 或 CLang 均未考虑部分类模板特化

c++ - CMake 测试 : was a library compiled/linked against libc++ or libstd++?

python - Numpy 矩阵乘法返回 nan

java - 小部件和复合 Material 不会根据外壳大小调整大小

java - 将图片大小调整为 100x100 大小并加载到 JLabel 中调整大小的图片中?

c++ - 这是命名空间问题吗

C++ 本地库和相对路径

c++ - 如何使用erase和iterator删除二维 vector 中的某一项?

c++ - std::vector 在加载/清除大量数据时变得越来越慢

c++ - Qt-有没有办法优先调整子窗口小部件的大小