c++ - 我应该如何更改此声明?

标签 c++ arrays resize

我得到了一个包含以下声明的 header :

//The index of 1 is used to make sure this is an array.
MyObject objs[1];

但是,我需要在程序启动时动态调整这个数组的大小。我认为我应该将它声明为 MyObject *objs;,但我认为如果原始程序员以这种方式声明它,那是有原因的。

无论如何我可以动态调整它的大小吗?或者我应该将它更改为指针然后再 malloc() 吗?

我可以使用一些 new 关键字以某种方式做到这一点吗?

最佳答案

使用 STL vector :

#include <vector>

std::vector<MyObject> objs(size);

vector 是一个 dynamic array并且是 Standard Template Library 的一部分.它会随着您自动调整大小 push back对象放入数组中,可以像使用 [] operator 的普通 C 数组一样访问.此外,&objs[0] 保证指向内存中的连续序列——与 list 不同。 -- 如果容器不为空。

关于c++ - 我应该如何更改此声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/727762/

相关文章:

c - 如何有效地将 uint16_t[2N] 转换为 uint32_t[N]?

c++ - 将路径复制到 QString

arrays - Bash 字符串数组

javascript - 连接的数组数量超过堆栈允许的数量

java - 如何以动态大小居中 JPanel

html - 调整窗口大小时保持元素与背景的相对位置?

jquery - 根据视口(viewport)宽度加载 jQuery

c++ - 我应该如何处理信用卡号验证算法?

c++ - C/C++/ObjC/Swift/JS 是 Apple 唯一允许的 iPhone 开发语言吗?

c++ - 使用 Visual C++ 设计器在主窗口上进行控制?