テンプレートを使用して、動的に割り当てられた配列を学校の目的で独自に作成しました。
私が尋ねようとしていることは機能しますが、その方法と理由がわかりません。知る必要があるところまで来ました。
template <typename TElement>
DynamicArray<TElement>::ensureCapacity () {
if (capacity >= elemNumb) {
return; //we have space to store the values
}
//we need to allocate more space for the values
TElement *auxArray = myArray;
//create space to hold more numbers
capacity = capacity * 2;
myArray = new TElement[capacity];
//copy the values
for (int i = 0; i < size; i++) {
myArray[i] = auxArray[i];
}
//release the memory
delete[] auxArray;
}
知っておく必要があります:TElement *auxArray = myArray;
これはどのように機能しますか? ポインタを使用していますか、要素は1つずつコピーされていますか? アルゴリズムの複雑さを理解できるように、それがどのように機能するかを理解する必要があります。誰かが私に複雑さを教えてもかまいませんが、私が探している本当の答えはそれがどのように機能するかです?
また、古いものmyArray = new TElement[capacity];
を削除する前にこれを行いますが、古いものは削除さmyArray
れますか? それとも、何らかの形でメモリのどこかにまだ浮かんでいますか?