動的に割り当てられた配列を作成しようとしています。これは、いっぱいになると、すべてを保持するのに十分な大きさの新しい配列を作成し、すべての値を古い配列から新しい配列にコピーします。これは、呼び出されると、tmp が指す新しい配列を動的に割り当て、arr[i] から tmp [i] に値を移動します。しかし、使い終わったら tmp を削除する必要があるのでしょうか? tmp を削除せずに配列の内容を印刷しようとすると問題なく印刷されますが、tmp を削除すると、物事が奇妙になり始め、内容が本来の方法で印刷されなくなるためです。これが私のコードです:
ArrayList::ArrayList(int initsize): last(0), size(initsize), origsize(initsize)
{
arr = new int[size];
}
ArrayList::ArrayList()
{
last = 0;
size = 16;
origsize = 16;
arr = new int[size];
}
void ArrayList::append(int value)
{
if (last<size) {
arr[last] = value;
}
last++;
if (last == size) {
int* tmp = new int[size+origsize];
int i = 0;
for (i=0; i<(size+origsize); i++)
tmp[i] = arr[i];
size = size+origsize;
arr = tmp;
arr[last] = value;
//delete tmp;
}
}