1

可以说我愿意

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]分配更多空间。这是我目前能想到的唯一选择。

4

2 回答 2

6

不幸的是,这在 C++ 中是不可能的。您必须分配一个新区域并将旧区域复制到新区域。

但是,C++ 有其他功能,例如std::vector,可以减轻手动处理这些事情的需要。

于 2013-03-13T08:09:34.893 回答
-1

代替 char* a ,您可以使用 char** a;

IE

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] */

虽然这是一种解决方法,但我建议使用矢量。

于 2013-03-13T08:24:09.013 回答