出于学校目的,我自己使用模板对动态分配的数组进行了处理。
虽然我要问的东西有效,但我不知道如何以及为什么,我已经达到了我需要知道的地步。
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;
这是如何工作的?是否使用指针,元素是否被一一复制?我需要了解它是如何工作的,这样我才能弄清楚我的算法的复杂性。我不介意有人告诉我复杂性,但我正在寻找的真正答案是它是如何工作的?
另外myArray = new TElement[capacity];
我在删除旧的之前这样做myArray
会删除旧的吗?还是它仍然以一种或另一种形式漂浮在内存中的某个地方?