0

私は動的割り当てを使用しc++structsおり、配列のサイズを自動的に増やす関数を作成する必要があります:

structType * array=new structType[max];

そして、「ベクトル」を使用できません。誰もこれを行う方法を知っていますか?

4

1 に答える 1

1

私のコメントに続いて、実装は次のとおりです。

void resizeArray(structType*& oldArray, size_t oldSize, size_t newSize) {
    structType* newArray = new structType[newSize];
    for (size_t i = 0; i < std::min(oldSize, newSize); ++i)
        newArray[i] = oldArray[i];
    delete[] oldArray;
    oldArray = newArray;
}

structType* array = new structType[max];
resizeArray(array, max, max + 10);

上記のコードは例外セーフではないことに注意してくださいnewArray[i] = oldArray[i];。スローすると、メモリ リークが発生します。しかし、これで始めるには十分だと思います。

于 2013-08-22T00:20:48.003 に答える