Top.Mail.Ru
Ответы

Как вставить новый элемент в начало динамического массива (C++)

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Новичок
10лет

#include <iostream>
using namespace std;
void print(int*, const size_t);
void push_front(int*, size_t&, int);
int main() {
size_t size = 2;
int* arr = nullptr;
if (arr = new(nothrow) int[size]) {
arr[0] = 2;
arr[1] = 3;
print(arr, size);
int element = 1;
push_front(arr, size, element);
print(arr, size);
delete[] arr;
arr = nullptr;
}
cin.get();
}
void print(int* ptr, const size_t size) {
for (size_t i = 0; i < size; ++i) cout << ' ' << ptr[i];
cout << endl;
}
// Вставка элемента в начало массива
void push_front(int* ptr, size_t& size, int element) {
const char oops[] = "Oops!\n";
size_t inc = size + 1;
int* tmp = nullptr;
if (tmp = new(nothrow) int[inc]) {
tmp[0] = element;
for (size_t i = 1; i < inc; ++i) tmp[i] = ptr[i - 1];
delete[] ptr;
if (ptr = new(nothrow) int[inc]) {
for (size_t i = 0; i < inc; ++i) ptr[i] = tmp[i];
delete[] tmp;
size = inc;
} else {
delete[] tmp;
cout << oops;
}
} else cout << oops;
}

Аватар пользователя
Мастер
10лет

int *newArr = new int[size + 1];
newArr[0] = newElement;// твой элемент
for (int i = 0; i < size; i++)
{
newArr[i +1] = arr[i];
}
delete[] arr;