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;を使用できます。

すなわち

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 に答える