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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Best_Coder
0 / 0 / 0
Регистрация: 18.09.2014
Сообщений: 81
#1

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

26.11.2014, 14:56. Просмотров 269. Ответов 4
Метки нет (Все метки)

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

C++ где размещается массив и как его правильно удалять?
Как удалять элемент из строки в c++? C++
C++ Какой элемент останется в кольце последним, если начать по очереди удалять из списка каждый n элемент
Динамические структуры данных ( функцию, которая будет удалять i-ый элемент) C++
C++ Как правильно добавлять и удалять элементы в вектор и из него
C++ Как удалять определенные значения из массива?
C++ Как удалять из массива элементы, первая цифра которых четная
C++ Из последовательности удалять каждый K-ый элемент до тех пор, пока не останется одно число
C++ Как удалять элементы массива?
C++ Как правильно удалять элементы листа?
C++ Реализовать функции, позволяющие добавлять/удалять блок элементов в массива/из массива
C++ Как умножить элемент двойного массива на элемент одинарного массива

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6514 / 4980 / 460
Регистрация: 14.02.2011
Сообщений: 16,495
26.11.2014, 15:02     Как правильно удалять элемент из массива? #2
От задачи зависит
в первом случае идет поэлементное копирование и если тип не равен по размеру int то копирование медленней
во втором можно задействовать memcpy которая оптимизирована но требуется дополнительная память
-THE_MASTER666-
Заблокирован
26.11.2014, 15:05     Как правильно удалять элемент из массива? #3
Цитата Сообщение от Best_Coder Посмотреть сообщение
Путём смещения элементов
Я тут как - то долго спорил и выяснял, есть ли в С++ или в самом процессоре, какая - то инструкция для сдвига памяти (Memory shift или самый быстрый способ перемещения блока памяти), вроде как меня убедили, что никакого memory shift-а нет. По этому любой сдвиг - это полноценное копирование
Тамика
Котовчанин
869 / 449 / 141
Регистрация: 16.02.2010
Сообщений: 2,835
Записей в блоге: 27
26.11.2014, 15:08     Как правильно удалять элемент из массива? #4
Цитата Сообщение от Best_Coder Посмотреть сообщение
Подскажите пожалуйста как правильно удалять элемент из динамического массива к примеру максимального?
Путём смещения элементов,или просто созданием нового массива с размером [N-1]?
Можно извратом. Как в векторе. То есть - изначально создавать больше элементов. Тогда про смещать и всё. Никакого перевыделения, по идее, быть не должно.
ValeryS
Модератор
6514 / 4980 / 460
Регистрация: 14.02.2011
Сообщений: 16,495
26.11.2014, 15:31     Как правильно удалять элемент из массива? #5
Цитата Сообщение от -THE_MASTER666- Посмотреть сообщение
По этому любой сдвиг - это полноценное копирование
правильно мыслишь
по большому счету и битового сдвига нет,тоже копирование,только реализован на аппаратном уровне

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru