Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

как удалить динамически созданный объект

6.7K
05 августа 2005 года
kasyava
28 / / 27.07.2005
Подмогните кто знает ...плз.

Во время выполнения программы при нажатии на кнопку создаю Image-и и называю их i0,i1,i2,i3,i4 (соответственно с их индексом в массиве)

вооотт...получается масссив Image-ей.

теперь необходимо при двойном клике на определенном Image-е удалить его. (ну например i2)

получается, как я понимаю, следующая цепочка i0,i1,_,i3,i4

А как сделать чтобы получилось i0,i1,i2,i3
12K
05 августа 2005 года
kamerer
10 / / 04.08.2005
Цитата:
Originally posted by kasyava
Подмогните кто знает ...плз.

Во время выполнения программы при нажатии на кнопку создаю Image-и и называю их i0,i1,i2,i3,i4 (соответственно с их индексом в массиве)

вооотт...получается масссив Image-ей.

теперь необходимо при двойном клике на определенном Image-е удалить его. (ну например i2)

получается, как я понимаю, следующая цепочка i0,i1,_,i3,i4

А как сделать чтобы получилось i0,i1,i2,i3



Если я правильно понял твой вопрос, то ничего кроме ручного копирования предложить не могу.

Т.е. Если ты удаляешь компонент из середины масива тебе надо сдвинуть все лежащие ниже него компоненты на 1 вверх. Обычный цикл. Причем учитывая, что ты будешь присваивать указатели это даже будет быстро работать.

6.7K
05 августа 2005 года
kasyava
28 / / 27.07.2005
Цитата:
Originally posted by kamerer
Если я правильно понял твой вопрос, то ничего кроме ручного копирования предложить не могу.

Т.е. Если ты удаляешь компонент из середины масива тебе надо сдвинуть все лежащие ниже него компоненты на 1 вверх. Обычный цикл. Причем учитывая, что ты будешь присваивать указатели это даже будет быстро работать.



ты меня правильно порнял........
И я понимаю что вроде все должно быть просто...

но у меня почемуто ничего не получается :(

если я удаляю первый раз то все срабатывает, а вот второй раз уже нет...
+ к этому еще пару заморочек, но это пока не важно

12K
05 августа 2005 года
kamerer
10 / / 04.08.2005
Цитата:
Originally posted by kasyava
ты меня правильно порнял........
И я понимаю что вроде все должно быть просто...

но у меня почемуто ничего не получается :(

если я удаляю первый раз то все срабатывает, а вот второй раз уже нет...
+ к этому еще пару заморочек, но это пока не важно



Хм.... А что именно не получается?
У тебя есть массив указателей.
Допустим их 5 штук u0,u1,u2,u3,u4
Тебе надо удалить u1.
Твои действия:
1 Проверка не является ли данный элемент последним?
Если да, то просто удаляешь.
Если нет то:
{
2 Цикл от следующего за удаляемым элементом до последнего
где u[предыдущий] = u[текущий]
3 Удаление последнего элемента.
}

Конечно приведенный мной метод не блещет оригинальностью, но во всяком случае он должен работать.

3
05 августа 2005 года
Green
4.8K / / 20.01.2000
Ну а что на счет использования стандартных контейнеров?
Например, vector.
12K
05 августа 2005 года
kamerer
10 / / 04.08.2005
Цитата:
Originally posted by Green
Ну а что на счет использования стандартных контейнеров?
Например, vector.



Ну это можно конечно. А еще есть шаблоны динамических массивов и тот же стрингрид по моему можно как динамический список исползовать. Но это уже будет не самый простой способ :)

3
05 августа 2005 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by kamerer
Ну это можно конечно.
А еще есть шаблоны динамических массивов и тот же стрингрид по моему можно как динамический список исползовать. Но это уже будет не самый простой способ :)



А в чем проблема использования вектора?
Что такое "шаблоны динамических массивов" ?

299
05 августа 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by Green
А в чем проблема использования вектора?
Что такое "шаблоны динамических массивов" ?



Странные вы) Говорить об одном и том же))
Вектор и является шаблоном динаимческого массива)
STL - стандартная библиотека шаблонов.

3
05 августа 2005 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by 3D Bob
Странные вы) Говорить об одном и том же))
Вектор и является шаблоном динаимческого массива)
STL - стандартная библиотека шаблонов.



Откуда такое определение "шаблоном динаимческого массива"?
Вектор - контейнер, не массив.

P.S. Ну и занудство... :D

299
05 августа 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by Green
Откуда такое определение "шаблоном динаимческого массива"?
Вектор - контейнер, не массив.

P.S. Ну и занудство... :D


Cогласен.

406
05 августа 2005 года
vitaly2003s
481 / / 27.07.2004
Можно так: имеется массив допустим ar с размерностью одного элемента к примеру пусть будет CImage

получаем:
к примеру у нас было 5 элементов в массиве на данный момент и нужно удалить n элемент то делаем так

выделенные так
CImage* ar=new CImage[5];
for(int i=0;i<5;i++) ar=new CImage(x,u...);

bool DeleteItem(CImage* ar,UINT pos,UINT TotalCount)
{
if(pos>TotalCount-1) return 0;
delete ar[pos];
if(pos!=TotalCount-1)
{
memcpy(&ar[pos],&ar[pos+1],sizeof(CImage)*(TotalCount-pos-1));
}
return 1;
}

где нить вызываем так:
UINT g_Count=5;//глобальная переменная

//нам нужно удалить второй элемент с массива
if(DeleteItem(ar,1,Count)) g_Count--;

Хотя конечно лучше использовать vector в данном случае
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог