可以说我愿意
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]
分配更多空间。这是我目前能想到的唯一选择。
可以说我愿意
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]
分配更多空间。这是我目前能想到的唯一选择。
不幸的是,这在 C++ 中是不可能的。您必须分配一个新区域并将旧区域复制到新区域。
但是,C++ 有其他功能,例如std::vector
,可以减轻手动处理这些事情的需要。
代替 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] */
虽然这是一种解决方法,但我建议使用矢量。