|
0 / 0 / 0
Регистрация: 26.04.2022
Сообщений: 67
|
||||||
Удалить элемент массива21.05.2024, 20:48. Показов 3123. Ответов 60
Метки нет (Все метки)
Здравствуйте.
Можно как то удалить элемент массива таким образом.
0
|
||||||
| 21.05.2024, 20:48 | |
|
Ответы с готовыми решениями:
60
Удалить из массива: а) третий элемент, б) к-й элемент. (С++ для начинающих)
|
|
759 / 456 / 213
Регистрация: 19.12.2016
Сообщений: 1,815
|
|
| 21.05.2024, 20:52 | |
|
Здравствуйте! Вы хотите удалить последний элемент, чтобы размер массива стал 99?
1
|
|
|
0 / 0 / 0
Регистрация: 26.04.2022
Сообщений: 67
|
|
| 21.05.2024, 20:59 [ТС] | |
|
да или еще я хочу удалить допустим с 50 по сотый элементы.
Добавлено через 1 минуту я еще не дошел до динамических массивов векторы(наверное так называется). я на 530 странице лафоре. Добавлено через 1 минуту можно наверное удалить весь и создать новый просто, но я хотел именно удалить элементы массива
0
|
|
|
759 / 456 / 213
Регистрация: 19.12.2016
Сообщений: 1,815
|
||
| 21.05.2024, 21:02 | ||
|
В c++ оп сути нельзя менять размер массивов, можно создать новый массив и перекопировать туда, или если новый размер массива меньше, то можно "держать в уме" новый размер и не читать/обрабатывать массив после этого размера.
Добавлено через 1 минуту
1
|
||
|
6147 / 2840 / 1040
Регистрация: 01.06.2021
Сообщений: 10,353
|
|
| 21.05.2024, 21:19 | |
|
2
|
|
|
фрилансер
6447 / 5643 / 1128
Регистрация: 11.10.2019
Сообщений: 15,017
|
|
| 22.05.2024, 06:03 | |
|
sima3, из массива невозможно удалить элемент. Используй std::vector
2
|
|
|
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,408
|
|
| 22.05.2024, 10:17 | |
|
sima3, в C++ массив тесно связан с памятью. Массив - непрерывный участок памяти для хранения элементов одного типа. Удалить из массива ничего нельзя. Мы же не можем ячейку с памятью взять и выбросить
Даже динамический массив или std::vector не удаляет элемент, а имитирует удаление обходными путями Есть 2 пути: Если порядок элементов не важен, то можно оставить тот же массив, а в качестве удаления элемента поменять его местами с последним и значение переменной, отвечающей за длину массива уменьшить на 1 Второй путь, создать новый массив на 1 меньше чем был. Скопировать все сохраняемые элементы. Освободить память от старого массива
2
|
|
|
6147 / 2840 / 1040
Регистрация: 01.06.2021
Сообщений: 10,353
|
|||
| 22.05.2024, 10:59 | |||
|
Ведь, и вправду, даже если у vector есть метод для удаления элемента, по сути, он же делает то же самое, что можно сделать вручную, но это никак не удаление же.
2
|
|||
|
2670 / 1333 / 479
Регистрация: 08.11.2016
Сообщений: 3,682
|
||
| 22.05.2024, 12:15 | ||
|
1
|
||
|
6147 / 2840 / 1040
Регистрация: 01.06.2021
Сообщений: 10,353
|
||
| 22.05.2024, 12:25 | ||
|
Но ты же согласен, что там удаления не происходит?! А то ты повернул тему не в ту сторону и непонятно, почему начал говорить об очевидных вещах.
1
|
||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 22.05.2024, 12:42 | ||
|
1
|
||
|
6147 / 2840 / 1040
Регистрация: 01.06.2021
Сообщений: 10,353
|
||
| 22.05.2024, 12:48 | ||
|
допустим, с помощью erase я "удаляю" по индексу какой-нибудь элемент в середине вектора. ты хочешь сказать, что произошло удаление? и посмотри, как началась дискуссия. ТС ответили, что удалить из его массива элемент невозможно. Но тут появился Алексей1153, который предложил вектор, дескать с ним-то теперь можно удалить. Все что я здесь утверждаю это то, что и вектор не удаляет.
1
|
||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|||
| 22.05.2024, 12:50 | |||
|
1
|
|||
|
6147 / 2840 / 1040
Регистрация: 01.06.2021
Сообщений: 10,353
|
||
| 22.05.2024, 12:55 | ||
|
происходит ли копирование/перемещение при erase? удалили элемент из середины. заметь, элементы вектора расположены в памяти contiguously!!!
1
|
||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|
| 22.05.2024, 13:00 | |
|
0
|
|
|
6147 / 2840 / 1040
Регистрация: 01.06.2021
Сообщений: 10,353
|
||
| 22.05.2024, 13:03 | ||
|
если вручную в С++ нельзя удалить элемент из массива, то как можно это сделать с помощью vector? никак! этот контейнер писали на том же С++, а не на инопланетном языке
1
|
||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|||
| 22.05.2024, 13:08 | |||
![]()
1
|
|||
|
6147 / 2840 / 1040
Регистрация: 01.06.2021
Сообщений: 10,353
|
|||
| 22.05.2024, 13:11 | |||
|
1
|
|||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|
| 22.05.2024, 13:13 | |
|
Royal_X, если так рассуждать, то вообще ни в каком языке ни при каких условиях удалить элемент из непрерывного массива нельзя.
Однако так рассуждать не нужно. В рассуждениях нужно использовать декларируемый контракт используемого средства. В контракте С-шного массива нет удаления из середины, а в контракте вектора - есть. Дальше, когда мы определились, что в std::vector<> удаление есть, можно задаться вопросом - а какова его вычислительная сложность? В ответе и будет содержаться та необходимая техническая разница, отражающая факт того, что на низком уровне там происходит. А эти вот рассуждения в стиле нигилизма "на самом деле мы ничего не удаляем", "классов на самом деле не существует" и т.п. вещи просто деструктивны для продуктивного подхода к решению задач.
2
|
|
|
6147 / 2840 / 1040
Регистрация: 01.06.2021
Сообщений: 10,353
|
|||
| 22.05.2024, 13:15 | |||
|
Если в векторе они хранятся непрерывно, то вы противоречите сами себе
1
|
|||
| 22.05.2024, 13:15 | |
|
Помогаю со студенческими работами здесь
20
Удалить первый нулевой элемент массива и добавить после каждого чётного элемента особый элемент
Удалить каждый k-ый элемент элемент массива Найти максимальный элемент массива и удалить его из массива, порядок других элементов сохранить Удалить строку, в которой находится максимальный элемент. Если такой элемент встречается несколько раз, то удалить все с Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|