Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 26.04.2022
Сообщений: 59
1

Удалить элемент массива

21.05.2024, 20:48. Показов 2468. Ответов 60
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.
Можно как то удалить элемент массива таким образом.
C++
1
2
3
4
5
6
7
8
9
int main()
{
    int* a1=new int[100];
    
    delete (a1+99);
 
    
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.05.2024, 20:48
Ответы с готовыми решениями:

Проверить, упорядочены ли элементы, заменить первый нулевой элемент и удалить указанный элемент из массива
Найти произведение отрицательных элементов массива, следующих после первого положительного...

Удалить из массива: а) третий элемент, б) к-й элемент. (С++ для начинающих)
С комментариями если не сложно, спасибо!

Удалить каждый K элемент массива пока не останется 1 элемент
Есть задача удалить каждый K элемент массива пока не останется 1 уцелевший. Вот пример ...

Удалить первый нулевой элемент массива и добавить после каждого чётного элемента особый элемент
Здравствуйте! Имеется такая задача: 1) Сформировать одномерный массив целых чисел, используя...

Удалить первый положительный элемент массива; вставить новый элемент перед первым максимальным элементом
Дан целочисленный массив размера N. Как удалить первый положительный элемент ? Как вставить новый...

60
 Аватар для zayats80888
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
22.05.2024, 13:17 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Royal_X Посмотреть сообщение
уничтожение элемента, не затрагивая других элементов (т.е. каждый элемент остается на своем же месте в памяти)
Ну так последний уничтожается не затрагивая других, оставаясь на своем месте.
Цитата Сообщение от Royal_X Посмотреть сообщение
а int не целое число и так можно продолжать вечно))
Я говорю о типах, а ты спускашься в демагогию.

Не по теме:

Цитата Сообщение от Royal_X Посмотреть сообщение
этот контейнер писали на том же С++, а не на инопланетном языке
Кстати, формально - не на с++. Реализация того же вектора в библиотеке gnu, например, с точки зрения стандарта языка содержит UB.

0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
22.05.2024, 13:21 22
Цитата Сообщение от Royal_X Посмотреть сообщение
я согласен, а int не целое число и так можно продолжать вечно))
Он имел в виду, что в векторе элементы не содержатся в массиве. Это одиночным образом сконструированные элементы в непрерывной памяти. Когда мы делаем erase - вектор вызывает деструктор для требуемого элемента, а затем делает конструирующее копирование\перемещение оставшихся элементов в освободившееся место со сдвигом на размер удаленных элементов.
С точки зрения семантики времени жизни С++ объект перестает существовать, если его деструктор был вызван.

Добавлено через 2 минуты
Цитата Сообщение от Royal_X Посмотреть сообщение
Если в векторе они хранятся непрерывно, то вы противоречите сами себе
Я не противоречу.
Я говорю о том, что определяющее свойство для оценки - это контракт, а не детали реализации.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
4323 / 2192 / 966
Регистрация: 01.06.2021
Сообщений: 7,545
22.05.2024, 13:25 23
Цитата Сообщение от DrOffset Посмотреть сообщение
Я не противоречу.
Я говорю о том, что определяющее свойство для оценки - это контракт, а не детали реализации.
просто ты очень доверчивый => если разрабы библиотеки прозвали данную операцию удалением, то значит ты тоже будешь называть это удалением, чтобы не нарушить контракт
Цитата Сообщение от zayats80888 Посмотреть сообщение
Ну так последний уничтожается не затрагивая других, оставаясь на своем месте
так и без вектора это можно делать
std::realloc
0
 Аватар для zayats80888
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
22.05.2024, 13:28 24
Цитата Сообщение от Royal_X Посмотреть сообщение
std::realloc
Для не pod типов это UB.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
4323 / 2192 / 966
Регистрация: 01.06.2021
Сообщений: 7,545
22.05.2024, 13:29 25
Цитата Сообщение от zayats80888 Посмотреть сообщение
Для не pod типов это UB.
назовем это реализацией gnu))
0
фрилансер
 Аватар для Алексей1153
5861 / 5400 / 1106
Регистрация: 11.10.2019
Сообщений: 14,431
22.05.2024, 13:32 26
Royal_X,

есть объект "массив". У него нет операции удаления элемента. Её можно сымитировать, написав пиалушку лапши, приправив парой багов

есть объект "вектор". У него есть метод удаления - давно написанный и отлаженный. Встроенный в стандарт. Внутри вся лапша уже есть

что выбираешь?
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
4323 / 2192 / 966
Регистрация: 01.06.2021
Сообщений: 7,545
22.05.2024, 13:33 27
***
Выводы:

ТС хотел без STL разобраться, как удалить элемент из
Цитата Сообщение от sima3 Посмотреть сообщение
int* a1=new int[100];
vector можно предлагать в качестве совета, но не как решение задачи

Добавлено через 55 секунд
Цитата Сообщение от Алексей1153 Посмотреть сообщение
что выбираешь?
пики точеные
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
22.05.2024, 13:34 28
Цитата Сообщение от Royal_X Посмотреть сообщение
просто ты очень доверчивый
Троллим? И на "ты" перешли? Ладно.

Цитата Сообщение от Royal_X Посмотреть сообщение
если разрабы библиотеки прозвали данную операцию удалением, то значит ты тоже будешь называть это удалением, чтобы не нарушить контракт
Все перепуталось у тебя. У операции есть семантика, которую определяет контракт. Это основной критерий.
Нигилизм тут ничего не дает, даже скорее вредит, разрушая выстроенные слои абстракции. А для понимания того, что удаление в векторе не такое уж и простое, есть, как я уже сказал, величина вычислительной сложности операции.

Цитата Сообщение от Royal_X Посмотреть сообщение
std::realloc
realloc - это про память, а не про объекты.
0
фрилансер
 Аватар для Алексей1153
5861 / 5400 / 1106
Регистрация: 11.10.2019
Сообщений: 14,431
22.05.2024, 13:35 29
Цитата Сообщение от Royal_X Посмотреть сообщение
решение задачи
так у задачи как то удалить элемент массива нет решения

а вот у задачи пометить элементы удалёнными или пересоздать массив - вполне есть

Цитата Сообщение от Royal_X Посмотреть сообщение
пики точеные
это для другого форума
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
4323 / 2192 / 966
Регистрация: 01.06.2021
Сообщений: 7,545
22.05.2024, 13:37 30
Цитата Сообщение от Алексей1153 Посмотреть сообщение
так у задачи как то удалить элемент массива нет решения
стоп стоп стоп
если ты говоришь, что в векторе есть удаление и соответственно есть решение, то значит у этой задачи есть решение, которое заключается в написании нечто схожего, что есть в векторе

или ты хочешь сказать, что даже если напишешь нечто схожее на вектор, то придется еще стандартизировать этот код, чтобы называть это удалением?
0
фрилансер
 Аватар для Алексей1153
5861 / 5400 / 1106
Регистрация: 11.10.2019
Сообщений: 14,431
22.05.2024, 13:39 31
Royal_X, вектор не удаляет элемент из массива
0
 Аватар для SomniPhobia
601 / 438 / 137
Регистрация: 22.11.2017
Сообщений: 1,393
22.05.2024, 13:40 32
Royal_X, zayats80888,
А что означает термин "удаление" в жизни, как считаете Вы?

Васе удалили зуб. В десне прослеживается его отсутствие. Где зуб? Он не исчез - лежит на столике
В словаре можно встретить следующее определение:
Удалить - переместить на наиболее далёкое расстояние, отдалить
То есть, как понимаю я, удалить в реальности - это даже не разрушить объект, а вынуть его, достать и убрать подальше, например, в мусорку. В последствие мусор будет вывезен далеко - за черту города

Ещё есть понятие уничтожить. А оно что значит? В моём понимании, уничтожить объект - это разорвать связи элементов внутри объекта. Уничтожить бумагу - разорвать её. И всё равно, бумага остаётся, просто связи между молекулами её составляющие разрушены

Я к тому, что удаление и уничтожение объекта не выбрасывает объект, не вычёркивает его из вселенной. Просто меняется состояние. При удалении объект определённым образом перемещается, мы от него избавляемся. При уничтожении мы разрушаем внутреннюю структуру связей присущую объекту

Теперь о компьютерном мире:
Что значит удалить папку?
Что значит уничтожить папку?

И в компьютере ничего не исчезает. Удаление приводит к перемещению объекта в корзину. А если подумать, то объект даже никуда не перемещается. Он же тяжёлый. Он остаётся на месте. На удаляемый объект навешивается бирка, что он "удалён". Объект станет отображаться в корзине и исчезнет с прежнего места
А если удалить из корзины? Тут то должно удалиться. И тут ничего не удаляется. Просто стирается дорожка, которая ведёт к объекту. Область памяти, которую занимает объект помечается свободной. Объект лежит всё там же, пока его не перезапишет кто ни будь
То есть, удалить в компьютерном мире может происходить путём пометки области памяти как пустое место. Отсюда возникает понятие мусора. Этот мусор сами должны перезаписать программы в ходе инициализации блоков памяти

Более надёжное удаление (уничтожение объекта) - перезапись удаляемого объекта другой информацией, затирание, своими руками. А не ждать пока кто-то затрёт эту память. Это если Вы хотите удалить что-то ценное, что-то что не должно валяться в памяти пусть дажё ещё 1 лишнюю секунду
И то данные можно восстановить при большом желании. Чтобы удалить без возможности восстановления, нужно перетереть ячейки памяти на несколько раз специальными последовательностями байт
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
4323 / 2192 / 966
Регистрация: 01.06.2021
Сообщений: 7,545
22.05.2024, 13:42 33
Цитата Сообщение от Алексей1153 Посмотреть сообщение
вектор не удаляет элемент из массива
так а DrOffset говорит, что удаляет согласно контрактам, семантике и еще чему-то еще))

Добавлено через 2 минуты

Не по теме:

SomniPhobia, я этот поток не выдержу, перестань. Два джедая с двумя мечами налетели на меня, а у меня нет даже светового меча, палкой размахиваюсь, а тут еще ты появляешься сбоку)))

0
фрилансер
 Аватар для Алексей1153
5861 / 5400 / 1106
Регистрация: 11.10.2019
Сообщений: 14,431
22.05.2024, 13:42 34
Royal_X, внутри себя вектор пусть хоть на Марс летает. А снаружи - для нас - он удаляет элемент
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
4323 / 2192 / 966
Регистрация: 01.06.2021
Сообщений: 7,545
22.05.2024, 13:43 35
Цитата Сообщение от Алексей1153 Посмотреть сообщение
А снаружи - для нас - он удаляет элемент
окей, напиши для ТС нечто схожее на вектор, без STL, чтобы тоже мог снаружи удалять элемент
0
фрилансер
 Аватар для Алексей1153
5861 / 5400 / 1106
Регистрация: 11.10.2019
Сообщений: 14,431
22.05.2024, 13:45 36
Royal_X, пусть ТС сам потренируется
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
22.05.2024, 13:46 37
Цитата Сообщение от Royal_X Посмотреть сообщение
так а DrOffset говорит, что удаляет согласно контрактам, семантике и еще чему-то еще))
Вектор - это не массив (в его реализации).
Удаление из вектора - это не удаление из массива. Удаление из вектора - это удаление одиночного элемента из непрерывной памяти.
У тебя смешались понятия непрерывной памяти и массива (особенно судя по упоминанию realloc).
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
4323 / 2192 / 966
Регистрация: 01.06.2021
Сообщений: 7,545
22.05.2024, 13:52 38

Не по теме:

Цитата Сообщение от DrOffset Посмотреть сообщение
И на "ты" перешли?
так я порой пишу "вы", порой "ты". Когда пишу, то особо не задумываюсь.



Добавлено через 4 минуты
Цитата Сообщение от DrOffset Посмотреть сообщение
Вектор - это не массив (в его реализации).
окей, тогда зачем в теме
Цитата Сообщение от sima3 Посмотреть сообщение
Удалить элемент массива
где вопрос задан
Цитата Сообщение от sima3 Посмотреть сообщение
Можно как то удалить элемент массива таким образом.
Мы все отвечаем нет, не можно, но тут появляется Алексей1153, который говорит, используй vector.

и вся эта дискуссия началась вот так

Добавлено через 1 минуту
Алексей1153, ты виновник данного холивара
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
22.05.2024, 13:54 39
Цитата Сообщение от Royal_X Посмотреть сообщение
Мы все отвечаем нет, не можно, но тут появляется Алексей1153, который говорит, используй vector.
Ну, типа, затем, чтобы не оставлять ТС с ответом "это невозможно, а дальше как хочешь", а предложить ему приемлемую альтернативу с той же семантикой.

(ПС. если слово "семантика" тебе не понятно, я могу объяснить)
0
фрилансер
 Аватар для Алексей1153
5861 / 5400 / 1106
Регистрация: 11.10.2019
Сообщений: 14,431
22.05.2024, 13:54 40
Royal_X, ура, наконец-то нашёлся я
0
22.05.2024, 13:54
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.05.2024, 13:54
Помогаю со студенческими работами здесь

Удалить каждый k-ый элемент элемент массива
Условия: выделить под массив память динамически; обращаться к элементам массива, используя...

Найти максимальный элемент массива и удалить его из массива, порядок других элементов сохранить
Условие Дан массив a из n элементов. Требуется найти максимум массива и удалить его из массива,...

Удалить строку, в которой находится максимальный элемент. Если такой элемент встречается несколько раз, то удалить все с
Дан массив В (5*5). Элементы массива ввести случайным образом. Удалить строку, в которой находится...

Удалить элемент из массива
Доброе время суток уважаемые. В наличии имеется одномерный динамический массив в котором надо...

Удалить элемент из массива
Всем привет. Есть вот такой код #include <iostream> using namespace std; int main(int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Fortran и WinAPI: как создать приложение с графическим интерфейсом
hw_wired 28.01.2025
Fortran — это один из старейших высокоуровневых языков программирования, широко используемый в науке и инженерии уже несколько десятилетий. Его название происходит от "Formula Translation" (перевод. . .
Списки в Haskell
hw_wired 28.01.2025
Haskell является функциональным языком программирования, который отличается лаконичностью синтаксиса и мощными абстракциями. Важным концептом в Haskell являются списки — упорядоченные коллекции. . .
Функции высшего порядка в Haskell
hw_wired 28.01.2025
Haskell – это современный функциональный язык программирования, который получил широкое распространение благодаря своей выразительности и мощным абстракциям. Одной из ключевых особенностей Haskell. . .
Как в цикле обойти все поля объекта в JavaScript
bytestream 28.01.2025
Объекты в JavaScript представляют собой фундаментальные структуры данных, которые позволяют хранить и организовывать связанную информацию в виде пар ключ-значение. Каждый объект можно представить как. . .
Как выбрать строки в DataFrame по значению столбца в Pandas
bytestream 28.01.2025
В области анализа данных библиотека Pandas стала незаменимым инструментом для работы с табличными данными в Python. Эта мощная библиотека предоставляет множество функций для эффективной обработки и. . .
Как сделать перенос строки в Bash
bytestream 28.01.2025
При работе с командной оболочкой Bash разработчики часто сталкиваются с необходимостью форматирования текстового вывода, где ключевую роль играет правильное управление переносами строк. Умение. . .
Поиск подстроки в строке с помощью Bash
bytestream 28.01.2025
Поиск подстроки в строке является одной из важных задач в программировании и обработке текстов. Применение такого поиска можно найти в самых разных областях, от анализа данных до разработки. . .
[golang] 169. Majority Element
alhaos 28.01.2025
Тут надо вернуть "мажористый" элемент который встречается в слайсе больше чем в половине случаев. По условиям задачи во входных данных такой элемент обязан присутствовать. / / . . .
Когда лучше использовать LinkedList вместо ArrayList в Java
bytestream 28.01.2025
При разработке Java-приложений выбор правильной структуры данных играет ключевую роль в обеспечении эффективности и производительности программы. ArrayList и LinkedList являются двумя. . .
Какой ответ HTTP лучше использовать: 403 Forbidden или 401 Unauthorized, когда недостаточно прав
bytestream 28.01.2025
В современной веб-разработке правильная обработка ошибок и точное информирование клиентов о статусе их запросов играют критическую роль в создании надежных и безопасных приложений. Особое внимание. . .
Как получить список всех файлов коммита в Git
bytestream 28.01.2025
Система контроля версий Git представляет собой мощный инструмент для управления изменениями в программном коде и других файлах проекта. В основе работы Git лежит концепция коммитов - снимков. . .
Как записать только часть изменений файла в Git
bytestream 28.01.2025
В процессе разработки программного обеспечения часто возникает необходимость сохранить только определенные изменения из множества внесенных правок в файлах. Система контроля версий Git предоставляет. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru