Подскажите пожалуйста примерную идею,как можно увеличить размер массива на с++.
Задача такова,что есть динамический массив,который пользователь заполняет.Далее,нужно написать функцию,которая добавляет элемент к массиву только в том случае,если этот елемент отсутствует. Написал вот такую функцию:
int* addItemToArray(int* array, int size, int newItem){
for (int i = 0; i < size; i++){
if (newItem == *(array + i)){
return nullptr;
}
}
int* newArray = new int[size + 1];
for (int i = 0; i < size; i++){
*(newArray+i) == *(array + i);
}
*(newArray + size + 1) = newItem;
return newArray;
}
Она возвращает адрес нового массива,далее пытаюсь принять этот результат:
int L,I;
cout << "Input size of array:";
cin >> L;
int* lineArray = new int[L];
srand(time(0));
for (int j = 0; j < L; j++){
cout << "Type number to fill array:";
cin >> I;
}
cout << "Type number to add to array:";
cin >> I;
while ((lineArray = addItemToArray(lineArray, sizeof(lineArray) / sizeof(lineArray[0]), 4)) == nullptr){
cout << "Number is already in array!Type another:";
cin >> I;
}
Но он мне возвращает нулевой адрес.На сколько я понимаю,это происходит из за того,что время жизни моего нового массива заканчивается на выходе из функции...Как это побороть?