1

C ++では、プログラムの実行中に新しい配列を作成することは可能ですか?具体的には、クラスにデータメンバーがあり、変数の名前がarrayであるとします。これは、サイズ10の配列です。実行時に、より大きな配列が必要な場合、ポインターを使用せずにこれを実行できますか?次のような方法はありますか?

int[] expandCapacity(int currentCapacity) {
     int [] arr = new int[currentCapacity*2];
     currentCapacity*=2;
     return arr;
}

この方法を使用して、次のように言って現在のアレイの容量を拡張できないのはなぜですか。

currentCapacity = 10;
array = expandCapacity (currentCapacity);

これが機能する場合は、ポインタを使用する必要はありません。ここで重要な何かが欠けているような気がします。私が欠けているものを指摘していただければ幸いです。

4

2 に答える 2

8

いいえ、これはまったく不可能です。

ただし、この方法を自分で行うことは、純粋な狂気です。使用std::vector<int>して、コンパイラの実装者にすべてを任せてください。

于 2012-06-18T15:33:36.500 に答える
3

たとえば、ベクターのような STL コンテナーを使用する必要があります。

これが機能する場合、ポインターを使用する必要はありません。ここで決定的な何かが欠けているように感じます。私が見逃していることを指摘していただければ幸いです。

ポインターはこれ以外にも役立ちます。適切な C++ チュートリアルを見つけることをお勧めします (詳細については、c++ FAQを参照してください)。

于 2012-06-18T15:33:54.253 に答える