Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

Как правильно удалять элементы листа? - C++
std::list<Bullet*> bullets; std::list<Bullet*>::iterator bullets_it; for (bullets_it = bullets.begin(); bullets_it !=...

Как правильно добавлять и удалять элементы в вектор и из него - C++
Всем доброго времени суток. Прошу объяснить как правильно добавлять и удалять элементы в вектор и из него... Использую его для хранения...

где размещается массив и как его правильно удалять? - C++
У меня вопрос: в примере ниже создается объект класса Map в динамической памяти. В какой памяти тогда располагается массив m? и как его...

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

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

по поводу указателей. Как правильно задавать массив указателей и его удалять? - C++
Т.е., например создаю указатель: TPoint *p_Point=NULL; а если массив? TPoint *p_MassPoint; //=?; как массив обнулить не ясно ...

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

Добавлено через 7 минут
Цитата Сообщение от Тамика Посмотреть сообщение
Тогда про смещать и всё.
давай порассуждаем
вот у тебя есть класс в котором есть штук пять указателей
и массив из 1001 объектов этого класса и удаляем первый
как сдвигать? конструктор копирования? 1000 конструкторов в котором по 5 выделений памяти 1000 деструкторов
в то время как с выделением нового размера memcpy тупо перенесет все
в общем
Цитата Сообщение от ValeryS Посмотреть сообщение
От задачи зависит
1
26.11.2014, 15:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2014, 15:31
Привет! Вот еще темы с ответами:

Как удалять определенные значения из массива? - C++
Пишу программу по одной задаче, в которой требуется удалить элементы, значение которых меньше среднего арифметического динамического...

Как правильно удалять выделенную память под указатель на указатель? - C++
есть код #include <iostream> #include <conio.h> #include <stdlib.h> #include <time.h> using namespace std; void sort_1(const...

Какой элемент останется в кольце последним, если начать по очереди удалять из списка каждый n элемент - C++
Создать структуру с именем Subject с полями: фамилия, имя. Сформиро-вать замкнутое кольцо (односвязный список, у которого последний...

Как удалять из массива элементы, первая цифра которых четная - C++
Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка . Удалить из него все элементы, первая цифра...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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