私はいくつかの割り当てを行っており、ここで 1 つの時点で動けなくなりました。list_add() 関数を作成しようとしています。その最初の機能は、配列に値を追加することです。2 つ目の機能は、配列のサイズを大きくすることです。したがって、ベクトルのように機能します。正解するかはわからないけど。私が試みたのは、古いものよりも大きい動的に割り当てられた新しい配列を作成し、すべての値を新しい配列にコピーすることです。
それは正しいアプローチですか?
本体はこちら
int main()
{
const int N = 7;
//declaring dynamic array allocation
int* list = new int[N];
int used = 0, a_val;
for(int i=0;i<11;i++)
{
list_add(list, used, N, i);
}
cout << endl << "Storlek: " << N << endl << endl;
cout << "Printar listan " << endl;
for(int i=0;i<used;i++)
{
cout << list[i] << ". ";
}
}
ここに関数があります
bool list_add(int *list, int& space_used, int max_size, int value)
{
if(max_size-space_used > 0)
{
*(list+(max_size-space_used-1)) = value;
space_used++;
return true;
}
else
{
cout << "Increasing size of array!" << endl;
int new_max_size = space_used+1;
delete [] list;
int *list_new = new int[new_max_size];
for(int i=0; i<new_max_size; i++)
{
list_new[i] = i;
cout << list_new[i] << ". ";
}
cout << endl;
space_used++;
list = list_new;
return false;
}
}