C/C++

Каким образом можно удалить элементы из динамического массива C++(без использования вспомогательного массива)

БЕЗ ВСПОМОГАТЕЛЬНОГО МАССИВА
Miran Ragimov
Miran Ragimov
27
Сдвиньте элементы влево, затерев при этом удаляемый элемент, а затем уменьшите размер массива на единицу.

#include <iostream>
#include <random>
#include <iomanip>
using namespace std;
int main() {
uniform_int_distribution<> uid(10, 99);
mt19937 gen{ random_device()() };
const auto w = 3U;
cout << "Size: ";
size_t n;
cin >> n;
auto box = new int[n];
for (auto i = 0U; i < n; ++i) box[i] = uid(gen);
for (auto i = 0U; i < n; ++i) cout << setw(w) << box[i];
puts("");

// По индексу в массиве
cout << "Index: ";
size_t index;
cin >> index;
for (auto i = index; i + 1 < n; ++i) {
box[i] = box[i + 1];
}
if (index < n) --n;
for (auto i = 0U; i < n; ++i) cout << setw(w) << box[i];
puts("");

// По номеру позиции
cout << "Position: ";
size_t pos;
cin >> pos;
for (auto i = pos - 1; i + 1 < n; ++i) {
box[i] = box[i + 1];
}
if (index <= n) --n;
for (auto i = 0U; i < n; ++i) cout << setw(w) << box[i];
puts("");

delete[] box;
system("pause > nul");
}
Володя Башев
Володя Башев
59 266
Лучший ответ
Miran Ragimov а как их сдвинуть
Miran Ragimov что такое size_t и обязательно ли ее написание?
Miran Ragimov for (int i = 0; i < length; i++)
{
int temp = arr[0];
arr[i] = arr[i - 1];
arr[length] = temp;
cout << arr[i];
}

Так нельзя?
Заменить удаляемый элемент на последний, уменьшить размер массива через realloc.
Михаил Рыкалов
Михаил Рыкалов
89 630
смотря как организован массив
DS
Dias Sabirov
79 569