Форум программистов, компьютерный форум CyberForum.ru

Как правильно удалять элемент из массива? - C++

Восстановить пароль Регистрация
 
Best_Coder
 Аватар для Best_Coder
0 / 0 / 0
Регистрация: 18.09.2014
Сообщений: 81
26.11.2014, 14:56     Как правильно удалять элемент из массива? #1
Подскажите пожалуйста как правильно удалять элемент из динамического массива к примеру максимального?
Путём смещения элементов,или просто созданием нового массива с размером [N-1]?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2014, 14:56     Как правильно удалять элемент из массива?
Посмотрите здесь:

C++ где размещается массив и как его правильно удалять?
Как удалять элемент из строки в c++? C++
C++ Какой элемент останется в кольце последним, если начать по очереди удалять из списка каждый n элемент
Динамические структуры данных ( функцию, которая будет удалять i-ый элемент) C++
C++ Как правильно добавлять и удалять элементы в вектор и из него
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,061
26.11.2014, 15:02     Как правильно удалять элемент из массива? #2
От задачи зависит
в первом случае идет поэлементное копирование и если тип не равен по размеру int то копирование медленней
во втором можно задействовать memcpy которая оптимизирована но требуется дополнительная память
-THE_MASTER666-
Заблокирован
26.11.2014, 15:05     Как правильно удалять элемент из массива? #3
Цитата Сообщение от Best_Coder Посмотреть сообщение
Путём смещения элементов
Я тут как - то долго спорил и выяснял, есть ли в С++ или в самом процессоре, какая - то инструкция для сдвига памяти (Memory shift или самый быстрый способ перемещения блока памяти), вроде как меня убедили, что никакого memory shift-а нет. По этому любой сдвиг - это полноценное копирование
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,538
Записей в блоге: 27
26.11.2014, 15:08     Как правильно удалять элемент из массива? #4
Цитата Сообщение от Best_Coder Посмотреть сообщение
Подскажите пожалуйста как правильно удалять элемент из динамического массива к примеру максимального?
Путём смещения элементов,или просто созданием нового массива с размером [N-1]?
Можно извратом. Как в векторе. То есть - изначально создавать больше элементов. Тогда про смещать и всё. Никакого перевыделения, по идее, быть не должно.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,061
26.11.2014, 15:31     Как правильно удалять элемент из массива? #5
Цитата Сообщение от -THE_MASTER666- Посмотреть сообщение
По этому любой сдвиг - это полноценное копирование
правильно мыслишь
по большому счету и битового сдвига нет,тоже копирование,только реализован на аппаратном уровне

Добавлено через 7 минут
Цитата Сообщение от Тамика Посмотреть сообщение
Тогда про смещать и всё.
давай порассуждаем
вот у тебя есть класс в котором есть штук пять указателей
и массив из 1001 объектов этого класса и удаляем первый
как сдвигать? конструктор копирования? 1000 конструкторов в котором по 5 выделений памяти 1000 деструкторов
в то время как с выделением нового размера memcpy тупо перенесет все
в общем
Цитата Сообщение от ValeryS Посмотреть сообщение
От задачи зависит
Yandex
Объявления
26.11.2014, 15:31     Как правильно удалять элемент из массива?
Ответ Создать тему
Опции темы

Текущее время: 21:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru