Я выполняю какое-то задание и застрял здесь в одном месте. Я пытаюсь написать функцию list_add(). Первая его функция — добавление значений в массив. Второй функционал для него — увеличение размера массива. Так что это работает как вектор. Хотя не знаю, правильно ли я понял. Я попытался создать новый динамически выделенный массив, который больше старого, а затем скопировать все значения в новый массив.
Это правильный подход?
Вот основной корпус
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;
}
}