是否有可能创建在运行时堆的数组,然后在需要时分配更多的空间?(Is it possible to c

2019-10-17 20:11发布

可以说,我做的

char *a;
a = new char[4];

现在,是有可能进一步延长数组的大小?

说我想继续我把里面的任何值a[0]a[3]的,但现在我想更多的空间, a[4]a[5]等,这有可能在C ++?


起初,我觉得也许我可以只让:

char* a[10];
a[0] = new char[size];

当需要更多的空间,我可以去a[1]和分配更多的空间。 这是我能在那一刻想到的唯一选择。

Answer 1:

可惜这不是在C ++可能。 你必须分配一个新的领域,复制旧到新。

然而,C ++有其他的设施,如std::vector ,这缓解了需要手动处理这些事情。



Answer 2:

取而代之的char *的一个,你可以使用字符**一个;

char**  a = new char*[4];

for(int i=0; i<4; i++)
  (*a)[i] = new char(i);   /* feed values to array */

/* now you need a[4]? no problem */
char tmp = (*a)[3];
a[3] = new char[2];

a[3][0] = tmp;
a[3][1] = xyz;    /* this is you a[4] */

虽然这是一个工作的时候,我会建议使用矢量。



文章来源: Is it possible to create an array on the heap at run-time, and then allocate more space whenever needed?