C/C++
Каким образом можно удалить элементы из динамического массива C++(без использования вспомогательного массива)
БЕЗ ВСПОМОГАТЕЛЬНОГО МАССИВА
Сдвиньте элементы влево, затерев при этом удаляемый элемент, а затем уменьшите размер массива на единицу.
#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");
}
#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");
}
Заменить удаляемый элемент на последний, уменьшить размер массива через realloc.
смотря как организован массив
Похожие вопросы
- Программирование на C++ с использованием динамического массива
- Задачка по СИ на вставку элемента в динамический массив.
- Распределение элементов в динамическом массиве
- Объясните мне разное поведение sizeof для статической константы и динамического массива. C.
- Как работать с элементами динамического массива из функции?
- Как удалить элемент массива в C++
- C++ динамический массив
- C++ добавить элемент, который введет пользователь в одномерный динамический массив
- Размер динамического массива, передаваемого в функцию в C++.
- C++ Одномерный динамический массив
{
int temp = arr[0];
arr[i] = arr[i - 1];
arr[length] = temp;
cout << arr[i];
}
Так нельзя?