0

配列に既存のデータをすべて保持させて、任意のデータ型の動的配列のサイズを 1 ずつ増やすことができる関数を実装しようとしています。

クラスでの実用的なプロジェクトのために動的配列を定期的に使用およびサイズ変更する必要があるため、これを行いたいので、ベクトルを使用することはできません。

まず、これが可能かどうかを知りたいです。可能であれば、誰かがその方法を教えてくれます。

これは私がこれまでに持っているものです。

template <typename Temp>
void incArraySize(Temp * dynamicArray, int i_Elements)
{
    Temp * dummyArr = new Temp [i_Elements];
    for (int l = 0; l < i_Elements; l++)
        dummyArr[l] = dynamicArray[l];

    delete [] dynamicArray;
    dynamicArray = new Temp [i_Elements+1];

    for (int l = 0; l < i_Elements; l++)
        dynamicArray[l] = dummyArr[l];

    delete [] dummyArr;
}

関数が最初に呼び出されたときは問題なく動作しますが、それ以降はアクセス違反が発生します。

4

3 に答える 3

1

なぜ2部?KennyTM が指摘したように、参照が必要です。

template <typename Temp>
void incArraySize(Temp *& dynamicArray, int i_Elements)
{
    Temp * p = new Temp[i_Elements + 1];

    for (int l = 0; l < i_Elements; l++)
        p[l] = dynamicArray[l];

    delete [] dynamicArray;

    dynamicArray = p;

}
于 2013-06-19T20:33:26.063 に答える