可以说,我做的
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 *的一个,你可以使用字符**一个;
即
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] */
虽然这是一个工作的时候,我会建议使用矢量。