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

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

21.05.2024, 20:48. Показов 2465. Ответов 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
Эксперт функциональных языков программированияЭксперт С++
4256 / 2109 / 965
Регистрация: 01.06.2021
Сообщений: 7,305
22.05.2024, 13:56 41
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от DrOffset Посмотреть сообщение
Ну, типа, затем, чтобы не оставлять ТС с ответом "это невозможно, а дальше как хочешь", а предложить ему приемлемую альтернативу с той же семантикой.
Алексей1153, это так или DrOffset выдумывает?

Добавлено через 38 секунд
Цитата Сообщение от DrOffset Посмотреть сообщение
если слово "семантика" тебе не понятно, я могу объяснить
да, пожалуйста, я внимательно слушаю
0
601 / 438 / 137
Регистрация: 22.11.2017
Сообщений: 1,386
22.05.2024, 13:58 42
Мы, будучи людьми, понимаем, что
под удалением элементов со значением "48" из системы 51 52 48 0 31 подразумевается переход системы из состояния
51 52 48 0 31 9
к состоянию
51 52 0 31 9
Как понимаю я, эту операцию у людей принято называть "удаление"

Будучи программистами, мы что-то заподазриваем неладное, опускаемся глубже в реализацию - как система выполняет переход из состояния
51 52 48 0 31 9
к состоянию
51 52 0 31 9
И понимаем, что не совсем то это похоже на "удаление", что творится там под капотом
0
Эксперт функциональных языков программированияЭксперт С++
4256 / 2109 / 965
Регистрация: 01.06.2021
Сообщений: 7,305
22.05.2024, 13:59 43
DrOffset, и можно еще рассказать немного о контрактах?

Добавлено через 1 минуту
Цитата Сообщение от SomniPhobia Посмотреть сообщение
Мы, будучи людьми, понимаем, что
под удалением элементов со значением "48" из системы 51 52 48 0 31 подразумевается переход системы из состояния
51 52 48 0 31 9
к состоянию
51 52 0 31 9
т.е. при удалении появляется мусор в конце?
0
фрилансер
5854 / 5393 / 1103
Регистрация: 11.10.2019
Сообщений: 14,399
22.05.2024, 14:01 44
Цитата Сообщение от Royal_X Посмотреть сообщение
Алексей1153, это так или DrOffset выдумывает?
это секретная информация
0
Royal_X
22.05.2024, 14:03
  #45

Не по теме:

SomniPhobia, какой милый котенок на аве)

0
601 / 438 / 137
Регистрация: 22.11.2017
Сообщений: 1,386
22.05.2024, 14:06 46
Цитата Сообщение от Royal_X Посмотреть сообщение
т.е. при удалении появляется мусор в конце?
Зависит от того, как мы реализуем удаление
Мусор может появится в конце, может появится в начале, может вообще не появляться, может все эти элементы три раза перекопируются куда-то
Есть состояние до операции 51 52 48 0 31 9
И есть состояние после операции 51 52 0 31 9
А как выполнен переход от одного состояния ко второму определяет реализация этого действия. И вопрос в том, можем ли мы это назвать "удалением"?
По факту было 51 52 48 0 31 9
стало 51 52 0 31 9
Элемент удалён или что вообще произошло?

Добавлено через 46 секунд

Не по теме:


Royal_X, спасибо за комплимент, но это Рысь

0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
22.05.2024, 14:08 47
Цитата Сообщение от Royal_X Посмотреть сообщение
да, пожалуйста, я внимательно слушаю
Семантика = Поведение и его Смысл.

Очевидно, что ТС не особо интересно большинство вышеозвученных нюансов, ему нужно решить задачу. Вот хочет человек вскипятить чай, и он ставит чайник - смысл (семантика) его действий - получить кипяток. Как именно работает чайник для решения этой задачи несущественная деталь. Чайник может быть газовый, электрический, солнечный, на ядерном топливе - это неважно, смысл операции - получить кипяток. Так же и здесь, в задаче ТС наверняка есть коллекция элементов, которая представлена (в его случае) массивом и возникла потребность один из элементов убрать. Это и есть смысл его вопроса.
Вектор предоставляет возможность убрать элемент из середины? Предоставляет. Смысл реализуется? Реализуется.
2
Эксперт функциональных языков программированияЭксперт С++
4256 / 2109 / 965
Регистрация: 01.06.2021
Сообщений: 7,305
22.05.2024, 14:15 48
Цитата Сообщение от DrOffset Посмотреть сообщение
Семантика = Поведение и его Смысл.
ясно, понял

Добавлено через 6 минут
DrOffset, но когда я использовал слово "массив" по отношению к вектору, на меня так со всех сторон жестко наехали. А ведь я руководствовался семантикой, мол что там, что там, чайник для непрерывного хранения элементов.
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
22.05.2024, 14:16 49
Цитата Сообщение от Royal_X Посмотреть сообщение
и можно еще рассказать немного о контрактах?
Заходя к себе домой, ты открываешь дверь. На двери есть замок, и она открывается в определенную сторону. Чтобы воспользоваться возможностью зайти домой, нужно выполнить контракт двери - повернуть ключ, потянуть за ручку, открыть дверь определенным образом. Если ты сделаешь это, то реализуешь установленный контракт и достигнешь цели (смысла) этой операции - попадешь домой.

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

Также и здесь. Есть вектор и он декларирует операцию "удаление" (декларирует контракт), которая реализует семантику (поведение и его смысл) удаления элемента. Чтобы пользоваться этим не нужно знать как устрено это удаление внутри, так же как не нужно знать как работает замок, чтобы попасть домой.
2
601 / 438 / 137
Регистрация: 22.11.2017
Сообщений: 1,386
22.05.2024, 14:18 50
Как я вижу:
Массив и динамический массив - это непрерывный участок памяти с одинаковыми по типу значениями, который управляется мозгами программиста
std::vector - это непрерывный участок памяти с одинаковыми по типу значениями, который управляется мозгами std::vector, что вшиты в класс

std::vector реализует свой паттерн, механизм удаления элемента. То есть, удаление можно вызвать от объекта std::vector
Массив и динамический массив не имеют встроенных реализаций действий. Программист при желании может сам описать, как в его понимании будет происходить "удаление" элемента из массива
То есть, программист создаст некую функцию, которая будет изменять состояние памяти. Программист это назовёт "удаление", но не факт, что его поддержат другие программисты

Давайте рассуждать в нескольких плоскостях:
1. Удаление в реальности, в человеческом понимании
2. Удаление в мире программирования в целом, удаление в понимании ЭВМ
3. Удаление в рамках языка C++, в рамках его сущностей, конструкций, парадигм и договорённостей
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
22.05.2024, 14:20 51
Цитата Сообщение от Royal_X Посмотреть сообщение
меня так со всех сторон жестко наехали.
По-моему на тебя никто не наезжал.
Ты просто сказал, что удаление из непрерывной последовательности невозможно в принципе (и поэтому, видимо, вектор тоже не подходит, т.к. на самом деле ничего не удаляет).
А тебе просто ответили, что это не важно, потому что при оценке инструмента в первую очередь важно какое поведение он обеспечивает, а не как он внутри реализован.
0
Эксперт функциональных языков программированияЭксперт С++
4256 / 2109 / 965
Регистрация: 01.06.2021
Сообщений: 7,305
22.05.2024, 14:22 52
Цитата Сообщение от DrOffset Посмотреть сообщение
По-моему на тебя никто не наезжал.
да я в добром значении этого слова. Но даже если наехали, то я зла не держу)
Цитата Сообщение от DrOffset Посмотреть сообщение
Ты просто сказал
вся проблема в том, что с самого начала я имел в виду
Цитата Сообщение от DrOffset Посмотреть сообщение
как он внутри реализован
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
22.05.2024, 14:28 53
Цитата Сообщение от Royal_X Посмотреть сообщение
вся проблема в том, что изначально я имел в виду как он внутри реализован
Ну а потом в контексте немножко прояснилось, что вектор и внутри реализован не как массив. Помнишь ведь?
Массив - это цельный объект, который располагается в непрерывной памяти.
А вектор - это множество объектов-элементов, которые располагаются в непрерывной памяти.
Логически, из массива нельзя удалить элемент, потому что они его неотъемлемая часть. Если ты уберешь из массива элемент, то это будет уже другой массив, другой объект. Так же как если ты уберешь поле из структуры, это будет уже другая структура. А вот вектор - это другие дело. Там ты можешь разрушить заданный элемент не трогая остальные. А то, что происходит дальше - это следствие требования на непрерывность памяти, а не следствие невозможности убить элемент из середины. Т.е. дальше, да, элементы начинают создаваться путем конструирующего копирования на месте удаленного и освобождаться на прежнем месте, что приводит к определенным накладным расходам.
0
460 / 327 / 64
Регистрация: 09.03.2016
Сообщений: 3,244
22.05.2024, 14:34 54
Цитата Сообщение от DrOffset Посмотреть сообщение
не нужно знать как работает замок
Читал я это где то и не единожды.
Открывая воду, не надо знать как устроен кран....
Это должен знать пьяный сантехник.
У него нету прокладки, он вставляет туда какую то хрень, которую накомунизьдил у соседа.
Берёт бабло и покупает ещё бухла.
А чем чаще менять прокладки, тем больше денег на бухло.
с++11; c++14, 17, итд.
0
Эксперт функциональных языков программированияЭксперт С++
4256 / 2109 / 965
Регистрация: 01.06.2021
Сообщений: 7,305
22.05.2024, 14:34 55
Цитата Сообщение от DrOffset Посмотреть сообщение
Ну а потом в контексте немножко прояснилось, что вектор и внутри реализован не как массив. Помнишь ведь?
я там использовал слово массив в бытовом значении, особо не подбирал слова, поскольку суть моих слов была вообще не в этом. Но как говорят, в холиварах, когда нет аргументов, начинают цепляться уже за слова. Если вы посмотрите на мою активность, то я как раз на форуме всегда утверждаю, что vector это не массив. Недавно был холивар и по string, я там доже говорил, что string это не массив символов.
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
22.05.2024, 14:39 56
Цитата Сообщение от Royal_X Посмотреть сообщение
. когда нет аргументов, начинают цепляться уже за слова. .
У меня полно аргументов.
В частности я даже не спорил, что с точки зрения памяти ничего не удаляется. Я лишь просто предложил посмотреть на это с позиции, которой раньше в теме не было.
0
Эксперт функциональных языков программированияЭксперт С++
4256 / 2109 / 965
Регистрация: 01.06.2021
Сообщений: 7,305
22.05.2024, 14:46 57
Цитата Сообщение от DrOffset Посмотреть сообщение
которой раньше в теме не было.
а ведь холивары так и рождаются

Допустим стоит вопрос: можно ли решить уравнение cos(x)=x аналитически?
Я говорю, что нет.
Приходит второй, говорит: используй метод Ньютона
Я начинаю спорить, говорю "А разве метод ньютона сможет решить аналитически, это же для численного решения"
Подходит третий, говорит, что я написал "ньютон" с маленькой буквы.
Четвертый говорит, что ТС на самом деле плевать хотел на аналитическое решение, согласно семантике он просто хочет решить уравнение, а как уже не важно
Пятый приходит, говорит, что чтобы решать уравнения, нужно иметь калькулятор, и не задумываться о методах и лучше иметь много бухла и прокладок
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
22.05.2024, 14:56 58
Цитата Сообщение от Royal_X Посмотреть сообщение
я там использовал слово массив в бытовом значении, особо не подбирал слова, поскольку суть моих слов была вообще не в этом.
Тут много нюансов.
Вектор - это массив по семантике, он ведет себя как массив и предоставляет его функциональность (и кое-что дополнительно).
Вектор - это не массив по реализации (см. выше).

То, что возвращает realloc - это не массив по семантике, это просто память. Мы можем начать рассматривать ее как массив, но только после договоренности.

Так что когда в этой теме я говорил, что вектор - это не массив, это было к контексте того, что он реализован не как массив. И это критически важно в этой теме, чтобы понять почему операция, которую предложил ТС, невозможна в принципе, а у вектора есть шансы ее выполнить.

Ну и я все еще не уверен, что ты не смешивал на каких-то этапах нашего разговора массив и непрерывную память.

Добавлено через 7 минут
Цитата Сообщение от Royal_X Посмотреть сообщение
а ведь холивары так и рождаются
Холивары рождают люди, которые не умеют или не хотят воспринимать информацию от других людей.

Ты высказал суждение, потом пришел я и сказал, что дескать, это верно,
Цитата Сообщение от DrOffset Посмотреть сообщение
если так рассуждать, то вообще ни в каком языке ни при каких условиях удалить элемент из непрерывного массива нельзя.
но такие рассуждения ни к чему не приведут полезному (в частности в контексте темы):
Цитата Сообщение от DrOffset Посмотреть сообщение
Однако так рассуждать не нужно. В рассуждениях нужно использовать декларируемый контракт используемого средства. В контракте С-шного массива нет удаления из середины, а в контракте вектора - есть.
Т.е., проще говоря, ответ про вектор правомерен, т.к. решает задачу.

Ты же отказался это воспринять и стал меня троллить, писать про доверчивость и т.п. И вот уже начался холивар. Не раньше.
0
845 / 648 / 323
Регистрация: 24.02.2017
Сообщений: 2,289
22.05.2024, 14:57 59
для примера возьмем строку char: удаление символа можно организовать сдвигом влево на один символ и в конце поставить символ конца строки. в нашем случае используем конструкцию
C++
1
2
 int size=100;
    int *n= new int[size];
сдвиг влево на количество удаляемых символов уменьшаем размер size на тоже количество удаляемых символов. Все что за size мусор.
0
Эксперт функциональных языков программированияЭксперт С++
4256 / 2109 / 965
Регистрация: 01.06.2021
Сообщений: 7,305
22.05.2024, 15:02 60
Цитата Сообщение от DrOffset Посмотреть сообщение
Ну и я все еще не уверен, что ты не смешивал
когда я говорю, что вектор это массив, ты говоришь, что я ошибаюсь (полагая, что я имел в виду реализацию)
когда я говорю, что вектор это не массив, ты и тут говоришь, что я ошибаюсь (полагая, что я имел в виду семантику)
т.е. ты в любом случае будешь говорить, что я ошибаюсь))

но почему я не могу быть правым в твоем понимании? ведь может же быть так, что когда я говорю вектор это массив, я имею в виду семантику, а когда говорю, что вектор не массив имею в виду реализацию.

Т.е. это и называется предвзятость
0
22.05.2024, 15:02
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.05.2024, 15:02
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution прилагаю файл архива проекта Gowin Eda и снимок. Восьмибитный счётчик из сумматора+ генератор сигнала согласования+ стартер fast регистров. Файлы прилагаю. . . .
UserScript для подсветки кнопок языков программировани­­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
Как создать нейросеть для генерации картинок на Python
InfoMaster 12.01.2025
Генерация изображений с помощью искусственных нейронных сетей стала одним из наиболее захватывающих направлений в области компьютерного зрения и машинного обучения. В этой статье мы рассмотрим. . .
Создание нейросети для генерации текста на Python
InfoMaster 12.01.2025
Нейросети, или искусственные нейронные сети, представляют собой модели машинного обучения, вдохновленные работой человеческого мозга. Они состоят из множества взаимосвязанных узлов, или "нейронов",. . .
Как создать нейросеть распознавания изображений на Python
InfoMaster 12.01.2025
Введение в распознавание изображений с помощью нейросетей Распознавание изображений с помощью нейронных сетей стало одним из самых впечатляющих достижений в области искусственного интеллекта. Эта. . .
Основы искуственного интеллекта
InfoMaster 12.01.2025
Искусственный интеллект (ИИ) представляет собой одну из наиболее динамично развивающихся областей современной науки и технологий. В широком смысле под искусственным интеллектом понимается способность. . .
Python и нейросети
InfoMaster 12.01.2025
Искусственные нейронные сети стали неотъемлемой частью современных технологий, революционизировав множество областей - от медицинской диагностики до автономных транспортных средств. Python, благодаря. . .
Python в машинном обучении
InfoMaster 12.01.2025
Python стал неотъемлемой частью современного машинного обучения, завоевав позицию ведущего языка программирования в этой области. Его популярность обусловлена несколькими ключевыми факторами, которые. . .
Создание UI на Python с TKinter
InfoMaster 12.01.2025
TKinter — это одна из наиболее популярных библиотек для создания графических интерфейсов пользователей (GUI) в языке программирования Python. TKinter входит в стандартную библиотеку Python, что. . .
HTML5 в разработке мобильных приложений
InfoMaster 12.01.2025
Введение: Обзор роли HTML5 в мобильной разработке В современном мире мобильных технологий HTML5 стал ключевым инструментом для разработки кроссплатформенных приложений. Эта технология произвела. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru